Я был очарован идеей теории хаоса с тех пор, как прочитал об эффекте бабочки. Подробнее об этом я читал в книге Джеймса Глейка «Хаос», в том числе и о Мандельброте. Но пока я не прочитал «Создай свой собственный Мандельброт» Тарика Рашида, я не осознавал, насколько простым было уравнение для рисования Мандельброта.

Это безобидно выглядящее уравнение порождает удивительное множество Мандельброта.

Небольшое изменение входных данных того же уравнения даст набор Жюлиа. Это порождает сложную границу, обнаруживающую рекурсивный аспект; есть много мандельбротов меньшего размера, которые можно увидеть при увеличении.

Чтобы узнать больше — посмотрите это видео — Что особенного в множестве Мандельброта?»

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

Но удовольствие от Мандельброта заключается в том, что можно увеличить масштаб и увидеть красивые узоры в интерактивном режиме.

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

Ниже приводится ядро ​​кода Мандельброта. Это вычисляет значение функции для максимального количества итераций.

Код

Это код набора Джулии.

Я выбрал более красочную палитру.

Результаты

Использование нажатия мышидля увеличения, ctrlдля уменьшения и Shift для панорамирования результатов Мандельброта и Джулии некоторые из полученных изображений/гифок показаны ниже.

Ссылки на живую демонстрацию также указаны в конце поста.

Мандельброт GIF

Юлия Гиф

Изображение Мандельброта 1

Изображение Мандельброта 2

Изображение Мандельброта 3

Изображение Мандельброта 4

Изображение Мандельброта 5

Изображение Мандельброта 6

Изображение Мандельброта 7

Изображение Мандельброта 8

Юлия, изображение 1

Юлия, изображение 2

Юлия, изображение 3

Ссылки

  1. Живое демо — Мандельброт
  2. Живое демо — Джулия
  3. Полный код Мандельброта в JS
  4. Полный код Джулии в JS
  5. Блокнот Python с 3D-изображениями — Мандельброт
  6. Блокнот Python с 3D-изображениями — Джулия

Ссылки:

  1. Сделай своего Мандельброта — Тарик Рашид

Если вы не разбираетесь в программировании или математике и хотите начать с нуля, чтобы понять концепцию Мандельброта в ясной, простой и пошаговой манере, эта книга отлично подойдет. Короткий (всего ~130 страниц), с большим количеством иллюстраций, легко воспринимаемый. Единственный минус в том, что код написан на Python 2.7.

2. HTML5 Canvas and Javascript — основной ресурс с кодом javascript для функций масштабирования и панорамирования.

3. Цветовая палитра — простейший код цветовой палитры для широкого спектра цветов.

4. Различные значения C для множеств Жюлиа

5. Цветовое вдохновение