Ну я тут снова осваиваю нейросети, и делаю с их помощью полезные штуки. В данном случае прогуливаясь по инету наткнулся статью где упоминалось про множество мандельброта, если помните или видели - это такая симпатичная штучка:
В статье была ссылка на английскую статью и пример кода на си. Я же попросил нейронку переписать код на JS чтобы в онлайн режиме смотреть что из этого выйдет. И что-то вышло. Полного понимания нет, но все-равно было интересно. Я попросил нейронку немного написать вступление и вот что она написала там:
Кто такой Мандельброт и зачем ему фракталы
Бенуа Мандельброт — польско-французский математик, который в 1970-х годах буквально изобрёл слово «фрактал». До него подобные структуры считались «монстрами» математики — слишком сложными, чтобы быть полезными. Но Мандельброт увидел в них порядок: береговые линии, облака, ветвление деревьев — всё это нельзя описать прямыми и окружностями, но можно приблизить фрактальной геометрией. Множество, названное его именем, стало визитной карточкой этой идеи — не потому что «красивое», а потому что показывает: хаос и порядок живут рядом.Практическая польза? Не в том, чтобы рисовать обои для рабочего стола. Фрактальный анализ сегодня применяется в сжатии изображений, моделировании антенн, изучении турбулентности и даже в финансовой математике — там, где классические модели ломаются о сложность реального мира.
Множество Мандельброта — кратко
Множество Мандельброта — это набор комплексных чисел
c, для которых последовательность, заданная формулойzₙ₊₁ = zₙ² + cприz₀ = 0, не уходит в бесконечность. На практике мы проверяем, не превысит ли модуль|zₙ|значение 2 за фиксированное число шагов.Как строится изображение
Для каждого пикселя с целочисленными координатами
(x, y), где0 ≤ x < Wи0 ≤ y < H, вычисляется комплексное число:c = cre + cim·i
где:
- Вещественная часть:
cre = 1.5 · (x − W/2) / (0.5 · zoom · W) + moveX- Мнимая часть:
cim = (y − H/2) / (0.5 · zoom · H) + moveYЗатем выполняется итерационный процесс:
z₀ = 0 + 0·izₙ₊₁ = zₙ² + cИтерации продолжаются, пока не выполнится одно из условий:
- Модуль
zₙпревысит 2;- Достигнуто максимальное число итераций
MAX_ITER.Модуль комплексного числа
z = a + b·iвычисляется как:|z| = √(a² + b²)
Пример: дляz = -2 − i→|z| = √(4 + 1) = √5 ≈ 2.236.Цвет определяется числом итераций
n:hue = (n % 256) × 360 / 256→ используется вhsl(hue, 100%, 50%).Цветовой круг HSV: 0°=красный, 60°=жёлтый, 120°=зелёный, 180°=голубой, 240°=синий, 300°=фиолетовый.
Все это я смог проверить на практике, чуть позже добавлю ссылку для баловства в онлайне. Наиболее интересные фигуры множества Жюлиа.
https://boolkin.github.io/html/Vibe/mand+zhu.html - красивые генерации
https://boolkin.github.io/html/Vibe/mand-pix.html - попиксельный расчет
Комментариев нет:
Отправить комментарий