FractalPark
Горящий корабльЛегко

Burning Ship

Квадратичный фрактал времени ухода на бесконечность: сложите обе координаты по абсолютной величине перед возведением в квадрат — и цветовые полосы образуют асимметричный кораблеподобный контур.

Открыть в Обзоре
Фрактал Burning Ship: тёмный главный корпус, пламенные полосы ухода на бесконечность
Burning Ship: клиновидный корпус, пламеподобные гребни над вещественной осью и слоистые полосы времени ухода на бесконечность.

Обзор

Burning Ship стоит вплотную к множеству Мандельброта, но один приём меняет всё. Перед каждым возведением в квадрат он заменяет и вещественную, и мнимую части z их абсолютными величинами. Орбита складывается к осям, и квадратичное отображение теряет вращательную симметрию. Отображение перестаёт быть аналитическим — оно не удовлетворяет уравнениям Коши–Римана, — и по его краю появляются жёсткие углы.

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

Обычный тест радиуса ухода по-прежнему работает: как только |z| превышает 2, расходимость гарантирована. Однако эта неаналитическая орбита больше не ведёт себя как комплексно-аналитическая функция. Её полосы времени ухода складываются в слои с резкими гранями и вложенные прямоугольные границы вместо гладких радиальных градиентов множества Мандельброта.

Математика

Fold, then square

z(n+1) = (absolute real z(n) + i times absolute imaginary z(n))^2 + c

Both real and imaginary components are reflected to nonnegative values, combined into a complex number, then squared. In expanded form, the real part is xₙ₊₁ = xₙ² − yₙ² + Re(c) and the imaginary part is yₙ₊₁ = 2|xₙ||yₙ| + Im(c). At every iteration, the absolute values fold the orbit back toward the axes: if xₙ or yₙ is negative, it is mirrored to positive before the squaring step. That fold produces the sharp, rectangular boundaries that set the Burning Ship apart from the Mandelbrot set’s smooth contours.

Try c = −1. For the Mandelbrot set, the orbit z₀=0, z₁=−1, z₂=0, z₃=−1, … stays bounded (period 2). For the Burning Ship, z₁ = (|0| + i|0|)² − 1 = −1, then z₂ = (|−1| + i|0|)² − 1 = 0, and the orbit settles into the same 2-cycle. Now take a point such as c = i: the fold redirects its orbit where the Mandelbrot iteration would not, producing a different escape decision.

История

In 1992, Michael Michelitsch and Otto E. Rössler first described and rendered the Burning Ship in a Computers & Graphics paper. Both were then researchers at the University of Tübingen (Eberhard Karls Universität Tübingen). Their paper gave the iteration and showed that the absolute-value fold produces what they called a “quasi-Julia set”: it resembles a classical Julia set, but arises from a non-analytic map.

The name “Burning Ship” comes from a close view near the real axis: a dark hull below, flame-like ridges above. Paul Bourke independently implemented the fractal in October 1993, crediting Michelitsch and Rössler; his page became an early online reference.

Because it is a non-analytic alteration of the Mandelbrot recurrence, the formula falls outside the classical complex-dynamics theory Fatou and Julia developed for analytic functions. It has since become one of the most widely explored non-analytic escape-time fractals. Buffalo, Airship, Celtic, and Perpendicular variants rearrange which coordinates are folded and when.

Визуальные особенности

Dark hulls, flame-like masts, and chimney shapes rise through folded layers. Set beside the Mandelbrot set, the asymmetry is immediate.

Ремиксы и примеры

Начните с канонического документа

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

Часто задаваемые вопросы

What changed from the Mandelbrot set?

Taking absolute values component by component breaks the Mandelbrot set’s rotational symmetry and makes the map non-analytic. Rounded boundaries become angled edges and nested rectangles; escape-time color settles into bands rather than smooth radial gradients.

Why is the ship sometimes upside down?

The canonical formula puts the ship upside down because absolute values turn negative imaginary coordinates positive before squaring. Most renderers, including FractalPark, reflect the image vertically for display. A screen whose Y-axis points down can add a second flip, so the final orientation depends on where the renderer applies that reflection.

Ссылки

Разбор исходного кода

  1. frm-v1:cfef49944d8f9bd8f2ee91b2d4ab4f9b30ad66475a6f783f52bb91a7a36b1617:init/0

    В burningShip, этот узел выполняет if ismand: z = 0; иначе z = pixel.

  2. frm-v1:cfef49944d8f9bd8f2ee91b2d4ab4f9b30ad66475a6f783f52bb91a7a36b1617:loop/0

    В burningShip, этот узел выполняет a = abs(z).

  3. frm-v1:cfef49944d8f9bd8f2ee91b2d4ab4f9b30ad66475a6f783f52bb91a7a36b1617:loop/1

    В burningShip этот узел выполняет: если power == 2, real(z) = real(a) * real(a) - imag(a) * imag(a); imag(z) = 2 * real(a) * imag(a); затем z = z + c; иначе z = a ^ power + c.

  4. frm-v1:cfef49944d8f9bd8f2ee91b2d4ab4f9b30ad66475a6f783f52bb91a7a36b1617:bailout

    В burningShip, этот узел выполняет |z| <= 256.

Синтаксические особенности

state-flow

Конкретный поток состояния: выбор ismand задаёт начальное z, abs(z) становится a, затем ветвь power заново строит z.

stopping-test

Проверка остановки оценивает только |z| <= 256; она не присваивает состояние.

Эксперимент с параметрами

power

Шаги

  1. Запустите burningShip с закреплённым профилем и запишите результат.
  2. Измените только power, оставьте остальные слоты выполнения и настройки профиля неизменными, снова запустите и запишите, есть ли различие.

Что наблюдать

Запишите, меняет ли a = abs(z); при power == 2 z заново строится из real(a) и imag(a), затем z = z + c, иначе z = a ^ power + c видимый результат или проверку остановки |z| <= 256 относительно базового запуска; определение не гарантирует различие.

Упражнение

Проследите аннотации burningShip и объясните, как a = abs(z); при power == 2 z заново строится из real(a) и imag(a), затем z = z + c, иначе z = a ^ power + c выполняется в отмеченных операциях.

Проверка выполнения

Ваш ответ объясняет все 4 аннотации, указывает a = abs(z); при power == 2 z заново строится из real(a) и imag(a), затем z = z + c, иначе z = a ^ power + c и отличает |z| <= 256 как проверку остановки от присваивания.

Подсказка

Поток состояния последовательно выполняет если ismand: z = 0; иначе z = pixel → a = abs(z) → если power == 2: заново постройте z из компонентов a и прибавьте c; иначе z = a ^ power + c и передаёт результат следующему шагу.

Источники и права

Источник: закреплённое определение выполнения и решение о публикации.

Сведения о правах следуют закреплённому решению в английском разделе.

Карточка формулы

burningShip

Эта каноническая реализация FractalPark опубликована и готова к запуску.

Детерминированный предпросмотр burningShip

Канонический исходный код

Язык
frm-like/1
Стандартная библиотека
1
Режим профиля
parameter-plane
Центр профиля
-0.5, 0
Масштаб профиля
0.4
Итерации профиля
96
Основание профиля
mechanical

Параметры

  • power: real

Канонический исходный код

Эта проверенная каноническая ревизия доступна только для чтения. Remix создаёт отдельную редактируемую копию.

Загрузка канонического кода…

Источник и текущая реализация

ID формулы
2ab193f5-4919-5e5c-a9fb-c1a0e3f5eb02
Каноническое имя
burningShip
Исходное имя
burningShip
Исторический источник
FractalPark
Текущая реализация
Собственность проекта

Это собственная реализация проекта FractalPark. Ссылка ведёт на зафиксированный канонический файл Definition.

Есть вопрос о правах или атрибуции?

Отправьте ID формулы и подтверждающие материалы. На время проверки сопровождающий может приостановить или отозвать реализацию. contact@fractalpark.com