Фрактал Burning Ship

редактировать
Качественное обзорное изображение фрактала Burning Ship Качественное изображение большого корабля в левой антенне

Пылающий Корабль фрактал, впервые описанный и созданный Майклом Мичелишем и Отто Э. Рёсслером в 1992 году, генерируется путем повторения функции:

zn + 1 знак равно (| Re ⁡ (zn) | + я | Im ⁡ (zn) |) 2 + c, z 0 = 0 {\ displaystyle z_ {n + 1} = (| \ Operatorname {Re} \ left ( z_ {n} \ right) | + i | \ operatorname {Im} \ left (z_ {n} \ right) |) ^ {2} + c, \ quad z_ {0} = 0}z _ {{n + 1}} = (| \ operatorname {Re} \ left (z_ {n} \ right) | + i | \ operatorname {Im} \ left (z_ {n} \ right) |) ^ {2} + c, \ quad z_ {0 } = 0

в комплексная плоскость C {\ displaystyle \ mathbb {C}}\ mathbb {C} , которая либо ускользнет, ​​либо останется ограниченной. Разница между этим вычислением и вычислением для набора Мандельброта состоит в том, что действительная и мнимая составляющие устанавливаются на их соответствующие абсолютные значения перед возведением в квадрат на каждой итерации. Отображение не является аналитическим, потому что его реальная и мнимая части не подчиняются уравнениям Коши-Римана.

фрактальные визуализации Burning Ship
Реализация
Анимация непрерывного уменьшения масштаба, чтобы показать количество деталей для реализации с максимальными 64 итерациями

В приведенной ниже реализации псевдокода жестко кодируется сложные операции для Z. Рассмотрите возможность реализации операций комплексных чисел, чтобы обеспечить более динамичный и повторно используемый код. Обратите внимание, что на типичных изображениях фрактала Горящего Корабля корабль отображается в вертикальном положении: реальный фрактал, полученный с помощью псевдокода ниже, инвертирован по оси x.

для каждого пикселя (x, y) на экране, do : x: = масштабированная координата x пикселя (масштабируется так, чтобы лежать в шкале X Мандельброта (-2,5, 1)) y: = масштабированная координата y пикселя (масштабируется, чтобы лежать в шкале Y Мандельброта (-1, 1)) zx: = x // zx представляет действительную часть z zy: = y // zy представляет мнимую часть z итерация: = 0 max_iteration: = 1000 while (zx * zx + zy * zy < 4 и итерация < max_iteration) do xtemp: = zx * zx - zy * zy + x zy: = abs (2 * zx * zy) + y // abs возвращает абсолютное значение zx: = xtemp iteration: = iteration + 1 if iteration = max_iteration then // Принадлежит к набору return insideColor return итерация × цвет
Ссылки
Внешние ссылки
На Викискладе есть материалы, связанные с фракталом Burning Ship.
Последняя правка сделана 2021-05-13 06:08:12
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте