FractalPark
ClassiqueMoyen

Perpendicular Celtic

Une application quadratique de la famille Perpendicular : plie la partie réelle avant de mettre au carré, plie encore le résultat réel, et la frontière se noue en tresses.

Ouvrir dans l'Explorateur
Fractale Perpendicular Celtic avec des bandes tressées, des arches en miroir et des boucles façon porcelaine
Perpendicular Celtic : bandes entrelacées et arches en miroir, pliées net sur le bord et bouclées à l'intérieur.

Vue d'ensemble

Perpendicular Celtic appartient à la famille Perpendicular des variantes du Burning Ship, aux côtés de Perpendicular Burning Ship et Perpendicular Buffalo. Son mouvement est un double pli : plie la composante réelle avant la mise au carré, puis replie la composante réelle du résultat. La composante imaginaire échappe à ce second pli.

Chaque itération redirige la frontière deux fois. Des formes tressées et entrelacées commencent à apparaître — assez proches des nœuds celtiques pour expliquer le nom. Des arches en miroir, des boucles façon porcelaine et des bandes de temps de fuite prennent des virages à angle droit sur des plis nets.

Dans certaines régions, elle est symétrique par rapport aux axes réel et imaginaire, contrairement à certaines variantes du Burning Ship. La raison, c'est la disposition perpendiculaire : les plis agissent orthogonalement, un axe à la fois plutôt que les deux en même temps.

Les mathématiques

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.

Histoire

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.

Caractéristiques visuelles

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 et exemples

Pars du Document canonique

Ouvre le même état de formule approuvé utilisé par ce guide, puis modifie la vue, la colorisation, les transformations ou l'animation dans l'Explorateur interactif.

Questions fréquentes

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.

Références

Parcours du code source

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

    Dans perpendicularCeltic, ce nœud exécute if ismand: z = 0; sinon z = pixel.

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

    Dans perpendicularCeltic, ce nœud exécute real(p) = abs(real(z)).

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

    Dans perpendicularCeltic, ce nœud exécute real(z) = abs(real(z2)).

  4. frm-v1:01058522dac48f2278d74a3e8a06b4c18e6d2589a3ccda69565dad37c325298d:bailout

    Dans perpendicularCeltic, ce nœud exécute |z| <= 256.

Caractéristiques syntaxiques

state-flow

Le flux d’état concret est : le choix de ismand initialise z ; p et z2 sont des états temporaires ; puis z est reconstruit et décalé par c.

stopping-test

Le test d’arrêt évalue seulement |z| <= 256 ; il n’affecte pas l’état.

Expérience sur les paramètres

Étapes

  1. En gardant les autres contrôles du profil fixes, exécute perpendicularCeltic avec 48 itérations.
  2. Utilise ensuite les 96 itérations du profil épinglé et note la différence.

Ce qu’il faut observer

Note si p prend abs(real(z)) et imag(z); z2 = p * p; z est reconstruit avec abs(real(z2)) et imag(z2), puis z = z + c modifie le résultat visible ou le test d’arrêt |z| <= 256 par rapport à la référence ; la définition ne garantit pas de différence.

Exercice

Suis les annotations de perpendicularCeltic et explique comment p prend abs(real(z)) et imag(z); z2 = p * p; z est reconstruit avec abs(real(z2)) et imag(z2), puis z = z + c s’exécute dans les opérations indiquées.

Vérification de réalisation

Ta réponse explique les 4 annotations, identifie p prend abs(real(z)) et imag(z); z2 = p * p; z est reconstruit avec abs(real(z2)) et imag(z2), puis z = z + c et distingue |z| <= 256 comme test d’arrêt plutôt que comme affectation.

Indice

Le flux d’état exécute successivement if ismand: z = 0; sinon z = pixel → p = (0, 0) → real(p) = abs(real(z)) → z2 = p * p → real(z) = abs(real(z2)) → z = z + c et transmet le résultat à l’étape suivante.

Sources et droits

Source : définition d’exécution épinglée et décision de publication.

Les informations de droits suivent la décision épinglée dans l’unité anglaise.

Fiche de formule

perpendicularCeltic

Cette implémentation canonique de FractalPark est publiée et exécutable.

Aperçu déterministe de perpendicularCeltic

Source canonique

Langage
frm-like/1
Bibliothèque standard
1
Mode du profil
parameter-plane
Centre du profil
-0.5, 0
Zoom du profil
0.4
Itérations du profil
96
Niveau de preuve du profil
mechanical

Paramètres

Aucun paramètre déclaré

Source canonique

Cette révision canonique vérifiée est en lecture seule. Remix crée une copie modifiable distincte.

Chargement de la source canonique…

Source et implémentation

ID de formule
627c38a8-8f4d-548f-a5a6-dd9f215adf60
Nom canonique
perpendicularCeltic
Nom d'origine
perpendicularCeltic
Source historique
FractalPark
Implémentation actuelle
Propriété du projet

Il s'agit d'une implémentation propre au projet FractalPark. Le fichier lié est la Definition canonique épinglée.

Un problème de droits ou d'attribution ?

Envoyez l'ID de la formule et les justificatifs. Le mainteneur peut suspendre ou retirer l'implémentation pendant l'examen. contact@fractalpark.com