четверг, 5 мая 2022 г.

Книга "Погружение в математику с Minecraft и Python"

Здравствуйте, дорогие читатели моего блога. Сегодня я хочу вас познакомить с новой моей книгой, которая предназначена для обучения математике и программированию детей от 10 -11 лет.

Книга носит название "Погружение в математику с Minecraft и Python" и является продолжением к книге "Python. Великое программирование в Minecraft".

     На данный момент она готовиться в печать и прошла вёрстку и корректуру. 
Ниже представлено содержание книги. В ней мы попытались собрать наиболее часто используемые термины, понятия и разделы школьной математики и частично затронули разделы высшей математики, но только те, что будут понятны ребёнку, и о которых он так или иначе слышал.
 
    В данной книге мы хотим помочь ребёнку понять многие разделы (темы) математики с применением наглядных демонстраций и оттачивания навыков в программировании. Тем самым показывая важность математики как в программировании, так и в нашем физическом мире, например архитектуре.
 
Почти каждый раздел сотоит из теории, практики, заданий для закрепления темы и контрольных вопросов.

 

Ниже представлено содержание книги.

Математические приключения в игре Minecraft с Python

 

Введение........................................................................................................ 5
ГЛАВА 1
Подготовительная работа.......................................................................... 7
1.1. Установка Python 3............................................................................... 8
1.2. Установка Minecraft Java Edition.
Выбор версий 1.12.2 или 1.17.1..............................................................12
1.3. Сервер Spigot..........................................................................................17
1.4. Процедура запуска..........................................................................18
1.5. Моя первая программа................................................................. 22
ГЛАВА 2
Элементарные математические функции..................................................31
2.1. Библиотека math...................................................................................32
2.2. Линейные функции и их графики.....................................................33
2.2.1. Продвинутый уровень...................................................................52
2.3. Квадратичные функции и их графики.............................................62
2.3.1. Продвинутый уровень................................................................... 78
2.4. Функции n-ой степени........................................................................92
2.5. Показательные функции................................................................... 105
2.6. Тригонометрические и гиперболические функции................. 107
2.6.1. Продвинутый уровень..................................................................115
ГЛАВА 3
Аналитическая геометрия............................................................................118
3.1. Окружность............................................................................................118
3.2. Гипотрохоида..................................................................................124
4 Математические приключения в игре Minecraft с Python
3.3. Фигуры Лиссажу................................................................................. 128
3.4. Спираль Архимеда и винтовая линия............................................. 131
3.5. Поверхности второго порядка........................................................ 135
3.5.1. Гиперболоид.................................................................................. 135
3.5.2. Конус.................................................................................................... 141
3.5.3. Параболоид.................................................................................... 146
3.5.4. Эллипсоид...................................................................................... 153
3.6. Продвинутый уровень ...................................................................... 156
ГЛАВА 4
Стереометрия..........................................................................................160
4.1. Пирамида...............................................................................................160
4.2. Заполненный конус...................................................................... 165
4.3. Цилиндр......................................................................................... 170
4.4. Шар и сфера.................................................................................. 174
4.5. Призма............................................................................................ 182
ГЛАВА 5
Фракталы............................................................................................. 195
5.1. Губка Менгера.............................................................................. 198
5.1.1. Детерминированный способ..................................................200
5.1.2. Рандомизированный способ...................................................... 221
5.2. Пирамида Серпинского.................................................................... 226
5.3. Папоротник Барнси........................................................................... 228
5.4. Кривая Гильберта.............................................................................. 235
Послесловие................................................................................................237
Приложение............................................................................................... 238
Литература................................................................................................ 258
Предметный указатель........................................................................... 259
Об авторах................................................................................................. 263

 

Авторы: Корягин Андрей Владимирович

Корягина Алиса Витальевна

 

Для краткого ознакомления с книгой предоставлю небольшую главу. 
Будем очень рады узнать ваше мнение в каких бы классах вы применили такой подход, для какого возраста?

 

Элементарные математические функции


Основы математики были описаны в первой книге «Python. Великое программирование в Minecraft». К данным основам относятся знания в области математических операторов, операторов сравнения, основ теории чисел (целые и дробные). На этом познания в математике не заканчиваются, и дальше, согласно школь-
ной программе, идут решения уравнений и неравенств и различных систем из них, которые перерастают в изучение функций и построение графиков. Затем идёт усложнение уравнений и функций. Все эти моменты мы постараемся рассмотреть в данной книге.

 

Для упрощения написания программ,связанных с математикой, для разных языков программирования разрабатывались математические библиотеки. Для языка Python — это библиотека math.


Математические приключения в игре Minecraft с Python


2.1. Библиотека math

 

Модуль math в Python предоставляет набор функций для выполнения математических, тригонометрических и логарифмических операций. Некоторые из основных функций модуля:


ƒ pow(num, power): возведение числа num в степень power
ƒ sqrt(num): квадратный корень числа num
ƒ ceil(num): округление числа до ближайшего наибольшего
целого
ƒ floor(num): округление числа до ближайшего наименьшего
целого
ƒ factorial(num): факториал числа
ƒ degrees(rad): перевод из радиан в градусы
ƒ radians(grad): перевод из градусов в радианы
ƒ cos(rad): косинус угла в радианах
ƒ sin(rad): синус угла в радианах
ƒ tan(rad): тангенс угла в радианах
ƒ acos(rad): арккосинус угла в радианах
ƒ asin(rad): арксинус угла в радианах
ƒ atan(rad): арктангенс угла в радианах
ƒ log(n, base): логарифм числа n по основанию base
ƒ log10(n): десятичный логарифм числа n
ƒ math.hypot(X, Y): вычисляет гипотенузу треугольника с кате-
тами X и Y (math.sqrt(x * x + y * y))
ƒ math.pi: константа pi = 3,1415926…
ƒ math.e: константа e = 2,718281…


Данная библиотека содержит стандартный набор функций,которые непосредственно применяют школьники с 1 по 11 класс, с затрагиванием и вузовского материала. Со всеми функциями math мы не будем знакомиться, для этого есть документации к библиотекам и книги о детальном их разборе. В первую очередь рассмотрим функции, которые встречаются в школьной программе, и постараемся связать математическую запись с решением  практических задач. Начнём с изучения линейных функций общего вида

 

y = k * x + b.


2.2. Линейные функции и их графики


Линейными функциями называют функции вида y = k * x, где k —это угловой коэффициент или коэффициент пропорциональности. В учебниках по математике существует такая запись: y = k * x + b, где k — это угловой коэффициент или коэффициент пропорциональности, b — число из множества рациональных или иррациональных чисел.

Данную функцию принято называть в профессиональном кругу математиков «аффинной», но в школьных учебниках её называют «линейной». Значение k влияет на то, как будет строиться график, — под каким
углом относительно оси X и Y он будет проходить.

Элемент b указывает на то, где график пересечётся с осью, если x = 0.

 

Есть два вида задач для этих функций:
ƒ нахождение k и b, если известны точки, принадлежащие графику;
ƒ проверить на принадлежность к графику точек с определёнными координатами.


Звучит вроде страшно и непонятно. Выйдем из абстракции к реальному миру. Возьмите длинную прямую палку, можно заменить на линейку. Палка также описывается данной функцией, в зависимости от того, как мы её расположим относительно начала координат. Что такое начало координат в физическом мире?


Началом координат в реальности может выступить всё что угодно, в основном что-то неподвижное: дерево, стул, стакан, дом, камень… Всё будет зависеть от того, какого размера вы возьмёте палку и какую точность измерения хотите получить. В седьмом классе очень много задач в геометрии и физике на нахождение
размеров объекта и определение расстояния между предметами, и подход с использованием функций также применим к ним.


«Зачем это нужно?» — спросите вы. На это есть множество обоснований, начнём с простого. Вы играете в футбол или стреляетев тире. В обоих случаях ваша задача — попасть в цель. Вы стараетесь бить по прямой, так чтобы мяч или пуля перемещалась вдоль представленного графика линейной функции. Этот график прохо-
дит через ворота или цель в мишени, т. е. координаты этих объектов принадлежат графику линейной функции или, иными словами, траектории движения.

 

Конечно, в данном случае никто из нас в юном возрасте не начнёт выписывать в этот же момент функцию
и вычислять правильную позицию, всё делается «на глаз», как нам кажется, но мозг всё это просчитывал за доли секунды, и воображаемая траектория полёта мяча — это тоже работа вашего мозга, который соединил две точки и провёл неосознанные вычисления.


Вроде как не убедительный пример применения данных знаний, но опытные игроки так и поступают — создают план действий и набрасывают траекторию движений. Рассмотрим более современный вариант, когда вы непосредственно не видите конечной цели. Например, это запуск спутников и ракет, симулятор стрельбы в компьютерных играх, разработка программного обеспечения для беспилотного транспорта… Во всех этих примерах во время их реальной работы ваше участие сводится к минимуму.

 

Вычислением и построением графиков функций траектории движения транспорта занимаются исключительно компьютеры.


И от того, как правильно вы определили функцию и подобрали коэффициенты, будет зависеть результат процесса. Во всех этих случаях машина должна просчитать координаты двух точек в определённый момент времени, построить график, проходящий через них, запустить процесс (запуск ракеты, полёт пули, движение в определённом направлении согласно условию) и отслеживать координаты полёта или движения с течением времени, чтобы создать отчёт о проценте успеха реализации задачи.


Теперь немного становится ясно, что математика нужна для получения точного и красивого результата, а не «на глаз». Для решения многих современных задач требуется большая точность, и здесь без математики не обойтись. Но вернёмся к линейным функциям. Сейчас мы попробуем построить графики функций
в Minecraft с разными значениями k и b, чтобы увидеть наглядно, как они влияют на построение.



мат

 Для визуализации графиков нам понадобится среда Minecraft, знания в области Minecraft API и Python. Строить графики будем по точкам, т. е. по блокам. Поэтому нам необходима функция setBlock() (смотри приложение).

 

Рассмотрим первый столбец таблицы и построим для каждой функции графики в Minecraft. Чтобы
различать графики, будем использовать блок «шерсть» с разным цветом (смотри приложение).


Создадим файл lin1.py и запишем стандартные строки кода для импортирования библиотеки Minecraft и настройки связи между кодом и игрой. Импортируем библиотеку по работе с блоками Minecraft и вызовем функцию получения координат игрока (более подробно рассматривается в книге «Python. Великое программи-
рование в Minecraft»).


Для того чтобы запись координат была приведена к общеизвестному виду, создадим переменные x, y, z и присвоим им значения координат игрока.


Рассмотрим первую функцию: y = 0.

Графиком этой функции является прямая, параллельная оси X, т. е. все точки графика будут
находиться на одном расстоянии от оси X. Точнее, прямая будет совпадать с осью X, потому что при любом значении x переменная y принимает значение, равное нулю.



line

 Как это можно реализовать программно? Для этого воспользуемся конечным циклом.

Хоть и прямая бесконечная, но она в любой точке будет неизменной, поэтому достаточно взять отрезок. Возьмём участок графика в промежутке x ∈ [0, 20), т. е. размер прямой будет 20 блоков от позиции игрока.

 

Для этого графика возьмём белую шерсть.


Выражение: y1 = 0 * x + 0 равносильно функции y = 0, где k = 0 и b = 0.

С каждым шагом мы строим блок, сдвигаясь по оси X на один блок, при этом значение y не меняется, согласно математической записи функции.

Программу необходимо сохранитьв Minecraft Python  Minecraft Tools  MinecraftPythonAPI 
py3minepi-master.

l

Результат программы представлен на рис. 28.

l1

Теперь, по аналогии, построим остальные графики.


Начнём с y = 0.2 * x.


Для неё запишем аналогичный код и покрасим шерсть в оранжевый цвет:

l2

Запустим программу и получим результат, как на рис. 29.

l3

Как видно, вместо ожидаемой прямой линии представлена ломаная. Это связано с масштабом построения и погрешностью. Так как мы взяли малый промежуток отрезка, а точка графика равна 1/20 размера от целого блока, и блоки в среде строятся по целым значениям, т. е. половина блока строиться не будет, то получаем

соответствующий график. Если увеличить промежуток до 100, то с расстоянием эта кривая «выпрямляется».


Напишем для всех остальных функций коды, где k ≥ 0:

l4

Результат работы программы изображён на рис. 30.

l5

Как видно, угол наклона графиков к оси X различен и напрямую связан с коэффициентом k, который также называют коэффициентом пропорциональности. Чем выше k, тем больше угол. Здесь нужно заметить, что существует предел угла, и он равен 90°. График никакой подобной функции не сможет быть строго перпенди-
кулярен оси X, так как угол в 90° недостижим.


 

Таким же свойством обладает тригонометрическая функция (тангенс)  -  tg(a), при tg(90°) = ∞.

Поэтому принято считать что,  k = tg(a).


Но график, который перпендикулярен оси X, существует. Его математическая запись принимает вид:

 

x = 0 или x = b. Постройте такой график самостоятельно.


Для примера связи k с tg(a) построим график функции y = x, где k = 1.

 

Из геометрии известно, что tg(a) равен отношению противолежащего катета к прилежащему в прямоугольном треугольнике.


В данном случае tg(a) = 1.
Открыв таблицу Брадиса, можно легко найти, что tg(a) = 1 при a = 45°.
Построим данный график функции с использованием tg(a).

Для того чтобы применить правильно тригонометрические функции,необходимо учесть то, что в языке программирования Python используется значение угла не в градусах, а в радианах.

  

 


Существует общая формула перевода градусов в радианы:


Для вызова тригонометрических функций и числа pi используют библиотеку math. Создадим файл lin2.py и импортируем библиотеки:


Теперь осталось написать код для подключения к креативному миру, преобразовать для простоты работы координаты и создать цикл на 20 повторений с использованием тригонометрической функции tg(45°).


Как видно, есть несколько нюансов записи кода:


ƒ в учебниках по математике принято писать tg, а во многих языках программирования tan;
ƒ угол записан в формате формулы для перевода градусной меры в радианную, и чтобы значение было наиболее точное,вызывают число pi из библиотеки math.

Результат работы программы представлен на рис. 31.


Для сравнения вы можете запустить обе программы и убедиться, что графики функции y = x строятся одинаково, так как 1 — точ-
ное значение.

Если вы будете брать нецелые значения k, то припостроении более длинного графика возможны незначительные
отклонения.

В первую очередь это связано с округлением в средеMinecraft.

Осталось для анализа построить графики функций с k < 0. Для этого рекомендуем подняться в воздух в среде Minecraft (по умолчанию — двойное нажатие клавиши ПРОБЕЛ).


Добавим в программу lin1.py код с отрицательными значениями k<0:


Если запустить программу, то мы получим результат, изобржённый на рис. 32.




Как видно, если k < 0, то график функции направлен вниз и симметричен графикам с равным по модулю k.


Некоторые читатели спросят: «А что такое модуль?»


Модуль — это некий математический оператор, который выводит только положительное значение числа при любом его значении. Общая запись модуля: |a| = |–a| = a.


В нашем случае график функции y = x симметричен графику функции y = –x, а y = 1.5 * x симметричен

y = –1.5 * x и т. д.


Мы рассмотрели построение графиков функций только с положительными значениями x, но также можно рассматривать и отрицательные значения.


Создадим файл lin3.py и скопируем весь код из файла lin1.py.

Изменим в каждом цикле диапазон с [0, 20) до [–20, 20).

Полный код представлен ниже:





Теперь рассмотрим графики функций, при которых k = 0, а b ≠ 0.

Создадим файл lin4.py. Импортируем нужные библиотеки для Minecraft и оптимизируем вывод координат:

 

Создадим код по уже ранее известной схеме для построения нужных графиков:



Код для построения графиков такой же, как и в предыдущих программах, за исключением небольшого нюанса для корня из 12.


 Для того чтобы извлекать корни, необходима функция. Во многих языках программирования корень извлекается с помощью функции sqrt().


Результат представлен на рис. 34.

line function py

 

 

 

 

 

 

 

 

 

 

Как видно, все графики строятся параллельно оси X и проходят точки y, равные line y1

 


В первой книге «Python. Великое программирование в Minecraft» были похожие построения, когда рассматривалось создание рядов блоков с помощью циклов и отступов по осям X, Y и Z.


Любые фигуры можно строить, непосредственно зная координаты каждой точки, или применять функции, описывающие фигуры. Данные графики функций c k ≠ 0 или b ≠ 0 рассматривались в вышеупомянутой книге.

 

Для полного понимания применения линейных функций осталось научиться строить графики, где k ≠ 0 и b ≠ 0. Чтобы анализ был намного глубже, предлагаем построить графики с симметричными коэффициентами.


y = –0.5 * x – 10, y = –0.5 * x + 10, y = 0.5 * x – 10, y = 0.5 * x + 10.


Создадим файл с именем lin5.py и импортируем нужные модули для работы с Minecraft:

Далее по аналогии с предыдущими программами создадим четыре цикла:

 



Как видно, эти четыре графика образовали греческую букву «сигма». Таким знаком в математике обозначают сумму. Для лучшего восприятия рекомендуем построить оси системы координат. Для этого необходимо написать ещё два цикла:





 

Теперь более наглядно видно, что графики имеют некоторые общие зависимости.

Графики, согласно программе, строятся в таком порядке: первая функция — это белый график, вторая — оранжевый, третья — фиолетовый и четвёртая — бирюзовый.

  

 

###############################################################

 

На этом демонстрационную часть я закончу.

Буду рад узнать ваше мнение. Интересен опыт применения Minecraft или подобных сред в образовании.




четверг, 28 апреля 2022 г.

Roblox studio — среда для обучения программированию на языке Lua

Roblox Studio — отличная среда для обучения детей основам программирования, game design, композиции и игровой логики.

Программирование изучается на основе языка Lua, с некоторыми изменениями для среды.
Roblox Studio

Применение и Распространённость

В первую очередь Roblox Studio  использовался для создания игрового контента Roblox сообщества.

Сейчас по популярности Roblox и Minecraft разделяют пальму первенства: более 100 миллионов игроков в Roblox и более 90 миллионов игроков в Minecraft

В Roblox не только играют, но и разрабатывают свои приложения и игры и зарабатывают на них. Согласно официальной статистики почти 30 миллионов разработчиков приложений и игр для Roblox
Статистика разработчиков

 Roblox достаточно гибкое сообщество и предусмотрело реализацию своего контента на различных платформах: ПК, планшет, телефон...

Поэтому, ваше приложение можно будет запустить как на Windows, macOS, так и на android и iOS. Для Linux также есть решение запуска и среды разработки и приложений.

Всё это расширяет возможности распространения. 

Игровая валюта

Среда Roblox Studio бесплатна и большинство игр и приложений бесплатны, но есть платный контент для эксклюзивов (модели, костюмы, модули, и т.д.), которые вы и сами можете создавать и продавать.

Игровая валюта в Roblox - это Robux. Официальная ставка


robux
Исходя из данных сведений, то 1 Robux = ~ 1рублю.

Возможности в Roblox Studio

Данная среда позволяет вам создать достаточно разнообразные игры, как по жанрам, так и по игровым механикам, но кроме этого вы можете создавать и приложения (калькуляторы, проигрыватели, конверторы, 3D карты и т.д. )

Roblox Studio предлагает огромный контент из бесплатных моделей, мешей, изображений и звуков, которые вы можете также пополнять. 
Models

Также среда поддерживает импорт 3d моделей, созданных вами в других редакторах, например в Blender. 
Модель из Blender 


Импорт модели

Ключевым моментом здесь является импорт низкополигональных моделей с числом полигонов меньше 10 000.

Ниже представлены вариации, что можно создавать и чему обучать в Roblox Studio.

1. Обучение архитектурному и графическому дизайну, разработке композиций интеръеров и т.д.
Архитектура

2. Обучение ландшафтному дизайну, географии и геологии. Приобретение опыта и навыков игрового level дизайнера
дизайнер уровне

3. Обучение программированию на языке Lua. Огромный спектр изучения: от базовых алгоритмов до машинного обучения.
программирование

Программирование

Программирование

4. Обучение математике и физике. Данная среда обладает всеми инструментами, чтобы осветить почти все разделы математики, а следовательно и реализовать физические модели явлений.
При должном подходе детей можно обучить многому.

Математика

Фракталы Аммонит

Папоротник Барнсли

Треугольник Серпинского

Физика

5. Разработка игрового приложения от нуля до выпуска. На основе данной среды вы можете показать ребёнку процесс разработки игры или приложения на различных стадиях: сценарий, 3d моделирование, прорисовка уровней, разработка игровой механики, разработка логики взаимодействия и поведения, звукорежиссура, сборка проекта, продвижение и реклама и, возможно, коммерческая реализация.
Игры


При грамотном подходе Roblox может стать в ваших руках серьёзным образовательным инструментом, который сможет дать не голую теорию, а практические навыки и опыт.

Я использую Roblox Studio в образовательных целях уже пять лет. На основе моего опыта я написал книгу по основам разработки игр и программирования на lua в Roblox:
"Roblox: играй программируй и создавай свои миры"

Roblox book

Вы можете подробно изучить данную тему на основе этой книги или сборника видеороликов, которые я сделал для помощи
Ссылка на весь плейлист 
https://www.youtube.com/playlist?list=PLQ9fFRN1nNjDPkusMFsxxVOTw2mBfC3_s

Пример одного видео

Удачного всем изучения.




Обновление редактора BlocklyKlik до верси 2.0

Сегодня вышло обновление графического редактора кода BlocklyKlik 2.0 Его задача - это упростить процесс написания программ и помочь учителям...