FractalPark
经典进阶

垂直凯尔特

一种两次折叠的二次映射:平方前后都用绝对值,边界便拧成相互咬合的纹样。

在探索器中打开
垂直凯尔特分形:编织带纹、镜像拱形与瓷器般的环纹
垂直凯尔特分形:相互咬合的编织带纹与镜像拱形,边界锐利折叠,内部环纹如瓷器。

概览

垂直凯尔特属于燃烧船变体里的「垂直」家族,同族还有垂直燃烧船、垂直野牛。它有两次折叠:平方前先折实部,平方后再折结果的实部;虚部不经过第二次折叠。

两段折叠让轨道边界一再转向,编出近似凯尔特结的咬合纹样。镜像拱形、瓷器般的环纹和锐利边界随之出现,逃逸时间色带在折处几乎拐成直角。

和部分燃烧船变体不同,它在某些区域同时关于实轴、虚轴对称。这来自折叠的正交排布:「垂直」指沿坐标轴逐一施加,而非两个方向一起折。

数学原理

垂直凯尔特迭代

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

迭代先折叠实部输入:构造 z′ = |xₙ| + iyₙ;平方得 (z′)² = (|xₙ|² − yₙ²) + i(2·|xₙ|·yₙ);再折叠结果的实部:zₙ₊₁ = ||xₙ|² − yₙ²| + i(2·|xₙ|·yₙ) + c。

双重折叠让实部在每次迭代中反射两次:平方前一次(把负的 x 镜像为正),平方后一次(把结果实部的负值镜像为非负)。虚部只通过交叉项中的 |xₙ| 间接折叠一次。

以 c = −0.5 为例:曼德布罗特集中 z₁ = −0.5、z₂ = −0.25,轨道有界;垂直凯尔特中 z₁ = ||0|² − 0²| + i(2·|0|·0) − 0.5 = −0.5,z₂ = ||−0.5|² − 0²| + i(2·|−0.5|·0) − 0.5 = |0.25| − 0.5 = −0.25,二者相同。但取 c = 0.3i 时,双重折叠带来的轨道变化,是曼德布罗特集和燃烧船都不会出现的。

历史

垂直凯尔特是燃烧船变体「垂直」家族的成员,同族包括垂直燃烧船、垂直野牛等形态。与家族其他成员一样,它起源于分形艺术社区,而非学术研究。

「凯尔特」的命名来自其图案与凯尔特结纹饰的视觉相似性,这是双重折叠操作自然产生的效果;「垂直」修饰语表示折叠沿正交方向施加——先作用于平方前的实部坐标,再作用于结果的实部。

垂直凯尔特出现在支持自定义迭代公式的分形浏览软件中,包括 Ultra Fractal、Fractal Extreme 和 Mandelbrowser。其最早的可考实例见于收录燃烧船变体的在线分形论坛与分形维基页面。

视觉特征

编织带纹、镜像拱形与瓷器般的环纹聚在锐利折叠的边界旁,逃逸时间颜色在这里近似直角弯折。大尺度下结构同时关于实轴与虚轴对称,深入放大后才出现细微的非对称。

再创作与示例

从 canonical Document 开始

打开本指南使用的同一份已审定公式状态,再在交互式探索器中调整视图、着色、变换或动画。

常见问题

为什么要两次使用绝对值?

两次折叠落在迭代的不同阶段:第一个绝对值在平方前折叠实部输入,第二个在平方后折叠结果的实部。实部因此每次都被反射两次,轨道对参数 c 的响应也随之改变。比起单次折叠的燃烧船,它的边界更细密,也更像编织。

它只是旋转后的燃烧船吗?

不是。它和燃烧船一样使用绝对值折叠,但顺序和作用对象不同:燃烧船在平方前折叠两个原始坐标,垂直凯尔特在平方前只折叠实部坐标,平方后再折叠结果的实部。这两段折法让轨道的几何形态和对称性都不一样了。

参考资料

源码导读

  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. 在其余 配置 控制固定时,以 48 次迭代运行 perpendicularCeltic。
  2. 再以固定配置 的 96 次迭代运行并记录是否有差异。

观察要点

记录 p 的实部取 abs(real(z))、虚部取 imag(z); z2 = p * p; 用 abs(real(z2)) 和 imag(z2) 重建 z, 随后 z = z + c 相比基线是否改变可见结果或 |z| <= 256 的停止判断;源定义不保证差异。

练习

追踪 perpendicularCeltic 的标注,并说明 p 的实部取 abs(real(z))、虚部取 imag(z); z2 = p * p; 用 abs(real(z2)) 和 imag(z2) 重建 z, 随后 z = z + c 在每个相关操作中如何执行。

完成检查

答案准确解释全部 4 个标注,指出 p 的实部取 abs(real(z))、虚部取 imag(z); z2 = p * p; 用 abs(real(z2)) 和 imag(z2) 重建 z, 随后 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
Profile 模式
parameter-plane
Profile 中心
-0.5, 0
Profile 缩放
0.4
Profile 迭代次数
96
Profile 证据等级
mechanical

参数

没有声明参数

规范源码

这是经过验证的只读规范版本。Remix 会创建一份独立的可编辑分支。

正在加载规范源码…

来源与当前实现

公式 ID
627c38a8-8f4d-548f-a5a6-dd9f215adf60
规范名称
perpendicularCeltic
原始名称
perpendicularCeltic
历史来源
FractalPark
当前实现
项目自有

这是 FractalPark 项目自有实现。所链接文件是固定版本的规范 Definition。

对权利或署名有异议?

请附上公式 ID 和支持证据。维护者可在复核期间暂缓或撤下该实现。 contact@fractalpark.com