FractalPark
ClassicMedium

Perpendicular Celtic

A Perpendicular-family quadratic map: fold the real part before squaring, fold the real result again, and the boundary knots into braids.

Open in Explorer
Perpendicular Celtic fractal with braided bands, mirrored arches, and porcelain-like loops
Perpendicular Celtic: interlocking bands and mirrored arches, sharply folded at the edge and looped within.

Overview

Perpendicular Celtic belongs to the Perpendicular family of Burning Ship variants, alongside Perpendicular Burning Ship and Perpendicular Buffalo. Its move is a double fold: fold the real component before squaring, then fold the real component of the result again. The imaginary component misses that second fold.

Each iteration redirects the boundary twice. Braided, interlocking forms begin to appear—near enough to Celtic knotwork to explain the name. Mirrored arches, porcelain-like loops, and escape-time bands take right-angle turns at sharp folds.

In some regions it is symmetric across both the real and imaginary axes, unlike some Burning Ship variants. The reason is the perpendicular arrangement: folds act orthogonally, one axis at a time rather than both at once.

The Mathematics

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.

History

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.

Visual Characteristics

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.

Remix and Examples

Start from the canonical Document

Open the same approved formula state used by this guide, then change the view, coloring, transforms, or animation in the interactive Explorer.

Frequently Asked Questions

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.

References

Source walkthrough

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

    In perpendicularCeltic, this node executes if ismand: z = 0; otherwise z = pixel.

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

    In perpendicularCeltic, this node executes real(p) = abs(real(z)).

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

    In perpendicularCeltic, this node executes real(z) = abs(real(z2)).

  4. frm-v1:01058522dac48f2278d74a3e8a06b4c18e6d2589a3ccda69565dad37c325298d:bailout

    In perpendicularCeltic, this node executes |z| <= 256.

Syntax features

state-flow

These annotations trace the formula-specific state flow through if ismand: z = 0; otherwise z = pixel; real(p) = abs(real(z)); real(z) = abs(real(z2)).

stopping-test

This annotation is the stopping test, |z| <= 256, rather than a state update.

Parameter experiment

Steps

  1. Run perpendicularCeltic with 48 iterations while keeping the pinned profile’s other controls fixed, and record the result.
  2. Run perpendicularCeltic at the pinned profile iteration count of 96, compare the two runs, and record whether a difference occurs.

What to observe

Record whether p takes abs(real(z)) and imag(z); z2 = p * p; z is rebuilt with abs(real(z2)) and imag(z2), then z = z + c produces a visible-result or |z| <= 256 stopping-behavior difference from the baseline; the pinned definition does not guarantee a difference.

Exercise

Trace perpendicularCeltic through its annotations, explaining the source operation p takes abs(real(z)) and imag(z); z2 = p * p; z is rebuilt with abs(real(z2)) and imag(z2), then z = z + c and the stopping test |z| <= 256.

Completion check

Your trace explains all 4 annotations for perpendicularCeltic, including p takes abs(real(z)) and imag(z); z2 = p * p; z is rebuilt with abs(real(z2)) and imag(z2), then z = z + c, and distinguishes |z| <= 256 from a state update.

Sources and rights

This teaching unit is grounded in runtime:01058522dac48f2278d74a3e8a06b4c18e6d2589a3ccda69565dad37c325298d and decision:627c38a8-8f4d-548f-a5a6-dd9f215adf60.

rightsStatus is project-owned; implementationBasis is project-owned; publicationDecision is publish; decisionReason is publish-project-owned-native-recipe. This statement does not make broader claims about any third-party original.

Formula Record

perpendicularCeltic

This canonical FractalPark implementation is published and runnable.

Deterministic preview of perpendicularCeltic

Canonical source

Language
frm-like/1
Standard library
1
Profile mode
parameter-plane
Profile center
-0.5, 0
Profile zoom
0.4
Profile iterations
96
Profile evidence
mechanical

Parameters

No declared parameters

Canonical source

This verified canonical revision is read-only. Remix creates a separate editable fork.

Loading canonical source…

Source and implementation

Formula ID
627c38a8-8f4d-548f-a5a6-dd9f215adf60
Canonical name
perpendicularCeltic
Original name
perpendicularCeltic
Historical source
FractalPark
Current implementation
Project-owned

This is a FractalPark project-owned implementation. The linked file is the pinned canonical Definition.

Rights or attribution concern?

Send the Formula ID and supporting evidence. The maintainer can hold or withdraw the implementation while the claim is reviewed. contact@fractalpark.com