FractalPark
КлассическиеСредне

Perpendicular Celtic

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

Открыть в Обзоре
Фрактал Perpendicular Celtic с плетёными полосами, зеркальными арками и фарфоровыми петлями
Perpendicular Celtic: сцепленные полосы и зеркальные арки, резко сложенные у края и образующие петли внутри.

Обзор

Perpendicular Celtic принадлежит семейству Perpendicular — вариантам Burning Ship — наряду с Perpendicular Burning Ship и Perpendicular Buffalo. Его приём — двойное складывание: вещественная составляющая складывается перед возведением в квадрат, затем вещественная составляющая результата складывается ещё раз. Мнимая составляющая пропускает второе складывание.

Каждая итерация дважды перенаправляет границу. Начинают появляться переплетённые, сцепленные формы — достаточно близкие к кельтскому плетению, чтобы объяснить название. Зеркальные арки, фарфоровые петли и полосы времени ухода на бесконечность делают повороты под прямым углом на резких складках.

В некоторых областях фигура симметрична относительно и вещественной, и мнимой осей — в отличие от некоторых вариантов Burning Ship. Причина — перпендикулярное устройство: складки действуют ортогонально, по одной оси за раз, а не по обеим сразу.

Математика

Perpendicular Celtic iteration

Fold the real input, square it, fold the resulting real part, then add c

First fold the real input: construct z' = |xₙ| + iyₙ. Square it: (z')² = (|xₙ|² − yₙ²) + i(2·|xₙ|·yₙ). Then fold the real part of that result: zₙ₊₁ = ||xₙ|² − yₙ²| + i(2·|xₙ|·yₙ) + c.

The double fold reflects the real component twice per iteration: before the square, negative x mirrors to positive; after it, a negative resulting real part mirrors to nonnegative. The imaginary component folds only indirectly, through |xₙ| in the cross term.

Consider c = −0.5. For the Mandelbrot set: z₁ = −0.5, z₂ = −0.25, bounded. For the Perpendicular Celtic: z₁ = ||0|² − 0²| + i(2·|0|·0) − 0.5 = 0 − 0.5 = −0.5, then z₂ = ||−0.5|² − 0²| + i(2·|−0.5|·0) − 0.5 = |0.25| − 0.5 = −0.25, same orbit. But try c = 0.3i: the double fold redirects the orbit in a way that neither the Mandelbrot set nor the Burning Ship reproduces.

История

Perpendicular Celtic belongs to the “Perpendicular” Burning Ship family, with Perpendicular Burning Ship, Perpendicular Buffalo, and related forms. Like the others, it came from the fractal art community rather than academic research.

“Celtic” names the visual resemblance to Celtic knotwork made by the double fold. “Perpendicular” names the folds’ orthogonal placement: first on the real coordinate before squaring, then on the real part of the result.

It appears in formula browsers supporting custom iterations, including Ultra Fractal, Fractal Extreme, and Mandelbrowser. The earliest documented instances are in online fractal forums and fractal wiki pages cataloging Burning Ship variants.

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

Braided bands, mirrored arches, and porcelain-like loops gather at folds where escape-time color turns at right angles. From far out, the structure is symmetric across both axes; deeper in, fine asymmetries appear.

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

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

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

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

Why are absolute values used twice?

The folds act at different moments: the first absolute value folds the real input before squaring; the second folds the squared result’s real part. The real component is therefore reflected twice per iteration, changing how the orbit responds to the parameter c. Compared with the single-fold Burning Ship, the boundary becomes finer and more braided.

Is it simply a rotated Burning Ship?

No. It is related to the Burning Ship through absolute-value folds, but it places them differently in the quadratic step. The Burning Ship folds both raw coordinates before squaring. Perpendicular Celtic folds the real coordinate before squaring and then folds the result’s real part again. That two-stage order gives the orbit a different geometry and a distinct symmetry.

Ссылки

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

  1. frm-v1:01058522dac48f2278d74a3e8a06b4c18e6d2589a3ccda69565dad37c325298d:init/0

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

  2. frm-v1:01058522dac48f2278d74a3e8a06b4c18e6d2589a3ccda69565dad37c325298d:loop/1

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

  3. frm-v1:01058522dac48f2278d74a3e8a06b4c18e6d2589a3ccda69565dad37c325298d:loop/5

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

  4. frm-v1:01058522dac48f2278d74a3e8a06b4c18e6d2589a3ccda69565dad37c325298d:bailout

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

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

state-flow

Конкретный поток состояния: выбор ismand задаёт начальное z, p и z2 являются временными состояниями, затем z строится заново и к нему прибавляется c.

stopping-test

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

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

Шаги

  1. Не меняя остальные настройки профиля, запустите perpendicularCeltic с 48 итерациями.
  2. Затем используйте 96 итераций закреплённого профиля и запишите различие.

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

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

Упражнение

Проследите аннотации perpendicularCeltic и объясните, как у p действительная часть равна abs(real(z)), а мнимая — imag(z); z2 = p * p; z заново строится из abs(real(z2)) и imag(z2), затем z = z + c выполняется в отмеченных операциях.

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

Ваш ответ объясняет все 4 аннотации, указывает у p действительная часть равна abs(real(z)), а мнимая — imag(z); z2 = p * p; z заново строится из abs(real(z2)) и imag(z2), затем z = z + c и отличает |z| <= 256 как проверку остановки от присваивания.

Подсказка

Поток состояния последовательно выполняет если ismand: z = 0; иначе z = pixel → p = (0, 0) → real(p) = abs(real(z)) → z2 = p * p → real(z) = abs(real(z2)) → z = z + c и передаёт результат следующему шагу.

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

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

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

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

perpendicularCeltic

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

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

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

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

Параметры

Объявленных параметров нет

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

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

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

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

ID формулы
627c38a8-8f4d-548f-a5a6-dd9f215adf60
Каноническое имя
perpendicularCeltic
Исходное имя
perpendicularCeltic
Исторический источник
FractalPark
Текущая реализация
Собственность проекта

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

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

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