KevlarBeaver

KevlarBeaver

Михаил Макаров. Программист, физик, математик. Живу в Мюнхене.
Пикабушник
Дата рождения: 9 января
в топе авторов на 555 месте
82 рейтинг 7 подписчиков 1 подписка 28 постов 1 в горячем
Награды:
5 лет на Пикабу
3

Занимаюсь портированием своей программы на MacOS с использованием ЯП Swift и графической подсистемы Metal

Самую первую версию своей программы по физике я писал больше двадцати лет назад на Delphi с использованием OpenGL 1.1 (там еще был фиксированный конвейер и никаких шейдеров). Современную версию я написал на C# и немного C++ с использованием OpenGL 3.x и в некоторых особо сложных случаях Vulkan (например, там где нужно было реализовать алгоритмы ray- и path-tracing). Я продолжаю ее пилить и улучшать, но в свободное время еще занимаюсь портированием под MacOS - и тут для меня две совершенно новые ниши: это язык программирования Swift и графическая библиотека Metal (не смотря на то, что Mac все еще поддерживает OpenGL, фактически он заморожен и новые фичи Apple туда больше не завозит).

Просто хочу поделиться видео, где уже вполне рабочая и местами глючная программа - реализовал небольшую часть модулей, и я думаю это займет еще месяцы работы.

Наверняка, кто-нибудь задаст вопрос, использую ли я ИИ (потому что уже не раз задавали) и - естесственно да, глупо не использовать инструмент, который есть в наличии и помогает ускорить разработку. Я использую ChatGPT (подписку за двадцать евро в месяц) и Claude (подписку за двесте евро в месяц) - и в целом, они мне местами очень хорошо помогают, но местами творят откровенную дичь и нуждаются в постоянном контроле, что они там понаделали. А еще токены расчитанные на неделю выжирают за несколько дней - и приходится ждать до следующей недели, потому что я не готов заносить еще больше бабла.

В целом цель конкретно этой поделки - изучить Swift и Metal, а также пройти весь процесс публикации и продажи софта в App Store, как я это сделал в Steam в прошлом месяце.

Показать полностью
1

Makarov Math Suite / Комплекс Математических Программ / Ранняя альфа-версия

Небольшое видео ранней версии моей программы по математике, которая сейчас находится в разработке. Она является ответвлением от моей программы по физике Physics Suite - в какой-то момент я понял, что многие модули больше описывают математику и/или вообще не касаются физики и решил выносить модули в отдельную коллекцию.

Показать полностью
5

Эксперимент, который сделал атом пустым

В 1909 году Ганс Гейгер и Эрнест Марсден обстреливали альфа-частицами золотую фольгу толщиной в несколько тысяч атомов. По модели Томсона положительный заряд был размазан по всему объёму атома, так что частицы должны были проходить насквозь, слегка отклоняясь. Большинство так и делало, но примерно одна из восьми тысяч отскакивала назад.

Резерфорд потом сравнил это с пятнадцатидюймовым снарядом, отлетевшим от листа папиросной бумаги. Объяснение он опубликовал в 1911 году: почти вся масса и весь положительный заряд собраны в ядре, которое в десятки тысяч раз меньше самого атома. Увеличьте атом до размеров стадиона — ядро будет мухой в центре поля. Всё остальное пустота, по которой размазаны электроны.Важно, что это была не качественная догадка. Резерфорд вывел формулу: доля частиц, рассеянных на угол θ, падает как 1/sin⁴(θ/2). Гейгер и Марсден проверили её по углам, по толщине фольги, по энергии частиц, по четырём разным металлам. Сошлось.

Метод пережил свою эпоху. Через полвека в SLAC тем же способом - обстрел и измерение углов - нашли кварки внутри протона. В LHC сегодня работает та же логика, изменились только энергии.Хочешь узнать, что внутри, - брось в это что-нибудь и смотри, как отскочит.

Комплекс Физических Программ (Makarov Physics Suite) - Доступно на Steam: https://store.steampowered.com/app/4861360/Makarov_Physics_S...

Показать полностью
16

Делаю программу с математическими визуализациями. Семь первых модулей

Двадцать лет, с 2004-го, я пишу физический симулятор - этим летом он наконец вышел в Steam (Makarov Physics Suite, 140 интерактивных 3D-сцен). По дороге накопились темы, которые к физике уже не относятся: узлы, четырёхмерные тела, гиперболическая плоскость, случайные блуждания. Я вынес их в отдельный проект - Makarov Math Suite.

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


Случайные блуждания (- walks)

Тысячи ходоков выходят из одной точки и шагают по решётке - каждое направление равновероятно. Облако растёт как корень из числа шагов, и стеклянная сфера ровно такого радиуса растёт вместе с ним. А кто хоть раз прошёл через дом, становится золотым. В одном и двух измерениях рано или поздно возвращаются почти все; в трёх - только каждый третий, около 34 %. Это теорема Пойи, и здесь она не рассказана, а измерена по рою: доля золотых стоит на экране и сходится к точному значению.


Узлы (Knots)

Торический узел T(p, q): кривая намотана p раз вокруг дыры тора и q раз вокруг его трубки. Трилистник, пятилистник, зацепление Соломона. Картинка сама считает свои пересечения при любом повороте камеры - и число никогда не опускается ниже известного минимума, как ни крути. Это и значит «инвариант». Поменяй p и q местами: картинка другая, узел - тот же самый, и числа это подтверждают.


Гиперболическая геометрия (Hyperbolic geometry)

Диск Пуанкаре: вся бесконечная гиперболическая плоскость уложена внутрь окружности, и до края - бесконечно далеко. Семиугольники по три в каждой вершине замощают её без зазоров и нахлёстов - в обычной плоскости такое невозможно. Замощение не расставлено руками: оно выращено отражениями одной центральной плитки. И оно течёт - мёбиусов сдвиг скользит узором, плитки всплывают от края и уходят обратно, и ни одно ребро при этом не меняет своей гиперболической длины. Рядом тот же узор поднят на гиперболоид - вторая модель той же геометрии.


Минимальные поверхности (Minimal surfaces)

Формы, в которые ложится мыльная плёнка: катеноид, геликоид, поверхности Эннепера и Шерка. У всех средняя кривизна в каждой точке равна нулю - изогнуто в одну сторону ровно настолько же, насколько в другую, - и панель меряет её вживую прямо на поверхности. Самое красивое: поворот одного угла перетекает катеноид в геликоид без единого растяжения - все расстояния на плёнке остаются прежними. Цвет показывает кривизну Гаусса: голубое - почти плоско, пурпурное - самое крутое седло.


Платоновы и архимедовы тела (Platonic and Archimedean solids)

Выпуклых тел, у которых все грани - одинаковые правильные многоугольники и все вершины устроены одинаково, ровно пять. Шестого нет и не будет. А дальше - срезание углов: каждое ребро отдаёт понемногу с обоих концов, угловые грани растут, старые сжимаются. При t = 1/3 из икосаэдра получается футбольный мяч - двенадцать пятиугольников и двадцать шестиугольников; при t = 1/2 старые грани встречаются серединами рёбер. Срезание в модуле идёт само и останавливается ровно там, где новые грани выходят правильными.


4D-политопы (4D polytopes)

Тень тессеракта - куб внутри куба. Поверни тело в плоскости xw, сквозь четвёртое измерение, - и внутренний куб разбухает, проходит сквозь внешний и встаёт на его место. Это «дыхание» и есть четвёртое измерение, увиденное своими глазами. Правильных выпуклых 4-политопов ровно шесть, и все они построены из координат, а не нарисованы: 120-ячейник, например, не вбит руками - его 600 вершин суть центры 600 тетраэдров другого тела, вывернутого наизнанку. Рёбра окрашены по четвёртой координате: тёплые ближе к «4D-глазу», холодные дальше.


L-системы (L-systems)

Линденмайер записал растения строками: аксиома, несколько правил замены и черепаха, которая читает результат - «нарисуй шаг», «повернись», «запомни, где началась ветка». Переписали строку один раз - веточка; пять раз - куст. Здесь растение растёт на глазах от ствола к листьям, кривая Гильберта штрих за штрихом пронизывает куб, дракон разворачивается - а когда рисунок дорисован, строка переписывается ещё глубже, и всё растёт заново. Числа порождает сама грамматика: у кривой Коха на n-м шаге 4^n отрезков и длина (4/3)^n - это видно и это сосчитано.


Это только начало. В работе уже есть ряды Фурье - эпициклы, которые рисуют кота суммой вращающихся окружностей, - векторные поля с теоремами Гаусса и Стокса, измеренными на живом рое частиц, и множества Жюлиа, где остров рассыпается в пыль ровно в тот миг, когда убегает одна-единственная орбита. Дальше по плану - перколяция, диаграммы Вороного, спираль простых чисел, гипотеза Коллатца, задача коммивояжёра.

Если есть математика, которую вы всегда хотели увидеть глазами, а не в формулах, - напишите в комментариях, какая. Список тем открыт.


Мой Комплекс Физических Программ доступен на Steam: https://store.steampowered.com/app/4861360/Makarov_Physics_S...

Показать полностью 6
3

Гранулярный барабан

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

Считается не картинка, а контакты. Каждый шарик - отдельное тело; когда два шарика перекрываются, между ними работает пружина с демпфером по нормали и трение с кулоновским пределом по касательной. Стенка барабана, оба торца и полки-подхваты - не декорация, а движущаяся граница: в точке касания они несут скорость ω×r, и это единственный способ, которым барабан вообще разговаривает с засыпкой. Он её не «крутит» - он её трёт.

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

Есть одно число, которое решает исход: √(g/R). При радиусе полметра это 4.43 рад/с. Это скорость, на которой стенке уже не нужна помощь - центростремительное ускорение на радиусе перебивает тяжесть, и шарик прижат к стенке даже наверху, в верхней точке круга. Число не подобрано и не вписано в код: оно печатается в панели, и его можно проверить в уме.

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

1. Обрушения (ω = 0.5 рад/с, одна девятая от порога)

Барабан почти стоит. Засыпка лежит внизу горкой, стенка подтаскивает её вверх по одному шарику, горка становится всё круче - и в какой-то момент срывается целым пластом. Потом всё повторяется.

Движение прерывистое, и это главное, что видно на видео: не течение, а серия отдельных обвалов. Выше центра барабана в этом режиме бывает 8 % шариков, засыпка занимает 150° окружности.

Если тут повернуть ручку трения вниз, до 0.05, обвалы исчезнут вовсе: стенка начнёт проскальзывать под засыпкой, и та просто ляжет на дно. Угол наклона постели падает с 23° до 3°.

2. Перекатывание (ω = 1.6 рад/с, треть порога)

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

Шариков выше центра - 18 %, засыпка занимает половину круга. Верх постели поднимается с 0.13 до 0.30 (при радиусе барабана 0.5).

Это рабочий режим настоящих мельниц, и на нём удобнее всего включить галочку с красителем: засыпка красится в два цвета по левой и правой половине, а на графике снизу считается индекс Лейси - 0 для полностью разделённых цветов, 1 для однородной смеси. На видео его хорошо видно, как он лезет с нуля.

3. Каскад с отрывом (ω = 3.2 рад/с, семь десятых порога)

Стенка успевает утащить шарики так высоко, что они перестают скатываться и начинают падать. Часть засыпки летит через полость барабана и бьёт по постели с другой стороны - отсюда и название.

Числа меняются заметно: выше центра барабана уже 31 % шариков, засыпка размазана по 300° окружности, верхняя точка поднимается до 0.448 - почти вровень с осью. Максимальная скорость шарика 4.17 м/с против 2.28 в первом режиме.

Шарики раскрашены по собственной скорости, и на этом видео цвет работает лучше всего: летящая струя идёт тёплой, лежащая постель - холодной.

4. Центрифугирование (ω = 9 рад/с, вдвое выше порога)

Выше √(g/R) стенка держит шарик уже без всякой помощи. Засыпка перестаёт падать и прилипает к стенке кольцом, которое едет вместе с барабаном. Перемешивание останавливается - в мельнице это авария, здесь это просто четвёртая картинка.

Средний радиус шариков подскакивает до 0.95 от радиуса барабана - они буквально размазаны по стенке. Выше центра барабана их 59 %, кольцо занимает 315° из 360°.

Одна честная оговорка про это видео. Кольцо получается благодаря полкам. Если поставить ползунок «Полки» на ноль, при тех же 9 рад/с центрифугирования НЕ будет: гладкая стенка при трении 0.4 проскальзывает под засыпкой, и та остаётся лежать внизу - выше центра оказывается 3 % шариков вместо 59 %. Порог √(g/R) говорит, удержится ли шарик наверху, но ничего не говорит о том, сумеет ли барабан его туда доставить. Снимать четвёртый режим надо с полками.

Что можно покрутить

**Скорость** - четыре кнопки ставят её сразу в середину нужного режима, ползунок ходит от 0.1 до 12 рад/с. Панель всё время пишет, в каком режиме барабан находится сейчас и где проходит порог.

Полки - от нуля до двенадцати радиальных пластин на стенке. Они таскают шарики вверх и роняют их через полость. Без них перемешивание идёт только поверхностным слоем.

Шарики - от 40 до 2000. При постоянном радиусе шарика это просто уровень заполнения: 60 шариков - верх постели на −0.34 и 1.4 % объёма, 500 - уже −0.04 и 12 %. Чем больше засыпка, тем дольше перемешивание: индекс Лейси за одно и то же время падает с 1.02 до 0.51.

Трение - кулоновский предел на касательную силу, одинаковый в контактах шарик-шарик и шарик-стенка. Задаёт угол, на который стенка утаскивает постель: 0.05 - постель лежит внизу (3°), 0.40 - 23°, 0.90 - 27°. Насыщается: от 0.05 до 0.40 прибавка двадцать градусов, от 0.40 до 0.90 - три с половиной.

Глубина - от 0.2 до 1 метра. Торцы барабана - такая же движущаяся граница, как стенка, так что в узком барабане они держат засыпку заметно сильнее.

Краситель - красит засыпку в два цвета по половинам и включает счёт индекса Лейси на графике.

Барабан крутится всё время, останавливать его нечем: во всех четырёх режимах смотреть надо именно на движение. Reset пересевает засыпку заново, не останавливая барабан, - это нужно, чтобы посмотреть, как график перемешивания снова лезет с нуля.

Доступно в Steam: https://store.steampowered.com/app/4861360/Makarov_Physics_S...

Показать полностью 4
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества