FractalPark
奇异入门

野牛

燃烧船家族的一种折叠二次变体:平方项取绝对值,交叉项保留 x 的符号,于是长出宽阔的角状瓣体和镜像内门。

在探索器中打开
野牛分形,展示角状瓣体、镜像门廊和扭曲细丝
FractalPark 渲染的野牛分形:宽阔角状瓣体围着镜像门廊,边缘缠着扭曲细丝。

概览

野牛把燃烧船的折叠挪了位置。它让实部、虚部各自平方,再对平方后的模长取绝对值,同时让交叉项里的 x 保留符号。折叠的模长和带符号的耦合放在一起,画出的几何既不像燃烧船,也不像更简化的凯尔特变体。

参数集向外张成宽大的弯角。瓣体里有镜像拱门和日蚀状区域,四周绕着细丝。沿实轴一折,上下两半便彼此照应。

燃烧船偏爱锐利的矩形火焰山脊;野牛把大瓣体的外缘画得更圆顺,把棱角留给内部拱门和细丝边界。这种反差一眼就能认出。

数学原理

野牛迭代

z(n+1) = absolute x(n) squared minus absolute y(n) squared + 2 i x(n) absolute y(n) + c

实部来自坐标模平方的差值:xₙ₊₁ = |xₙ|² − |yₙ|² + Re(c)。虚部让带符号的 xₙ 乘上折叠后的 yₙ:yₙ₊₁ = 2·xₙ·|yₙ| + Im(c)。关键差别在折叠的落点:野牛折叠平方后的项,不折叠平方前的原始坐标。交叉项留下 xₙ 的符号,也就留下了燃烧船全折叠交叉项抹掉的方向不对称性。

试试 c = −0.5。从 z₀ = 0 出发:第一步 z₁ = |0|² − |0|² + 2i·0·|0| − 0.5 = −0.5;第二步 z₂ = |−0.5|² − |0|² + 2i·(−0.5)·|0| − 0.5 = 0.25 − 0.5 = −0.25。轨道进入有界振荡,在负实轴上来回摆动。燃烧船用同一个 c,第二步是 (|−0.5| + i|0|)² − 0.5 = 0.25 − 0.5 = −0.25;路径已经不同,因为它先折叠实部再平方。

历史

1992 年燃烧船发表后,野牛分形从分形探索社区里冒了出来,成为众多变体之一。它属于“折叠”二次映射家族;绝对值操作换个位置、换个顺序,逃逸时间几何就会改头换面。

野牛分形没有像燃烧船那样的一篇起源论文。它很可能来自在线分形软件社区,Ultra Fractal、Fractal Extreme 等程序让人能自行定义迭代公式。“野牛”这个名字大概来自大瓣体的犄角形状,像野牛头的剪影。

目前可查的最早文档是 theory.org 的分形动力学页面,它把该公式称作燃烧船的衍生变体。FractalPark 实现的是 HPDZ 野牛变体,与该页描述的原始野牛公式不同。

视觉特征

宽阔角状瓣体定下整体轮廓,平滑外缘里切出锐利细节。瓣体内有镜像日蚀状门廊和扭曲细丝边界。整体沿实轴对称。

再创作与示例

从 canonical Document 开始

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

常见问题

轨道的哪一部分被折叠?

野牛对坐标平方后的模长取绝对值;在交叉项中只折叠虚分量,同时保留 x 的符号。折叠发生在平方后的坐标模长上,不是在平方前的原始坐标上。燃烧船恰好相反:它先折叠两个原始分量,再整体平方。

野牛公式能生成 Julia 集吗?

可以。固定 c,改变初始点 z₀,就能看到野牛 Julia 集。所选 c 决定光滑与角形特征如何混在一起;连通和不连通的 Julia 结构都会出现。

参考资料

源码导读

  1. frm-v1:b7dd588e3cf8c70a1ec52801a03b6ee1b6980009c0725f8a32ecfa8fe1a6dfad:init/0

    初始化节点执行: `if ismand`

  2. frm-v1:b7dd588e3cf8c70a1ec52801a03b6ee1b6980009c0725f8a32ecfa8fe1a6dfad:loop/0

    循环节点执行: `x2 = abs(real(z)) * abs(real(z))`

  3. frm-v1:b7dd588e3cf8c70a1ec52801a03b6ee1b6980009c0725f8a32ecfa8fe1a6dfad:bailout

    终止测试为: `|z| <= 256`

语法特征

source-sequence

此结构把所引用的源代码步骤组织为一个可检查的顺序。 a569d2c4-d397-5634-9dfe-21b2ab1a386a:b7dd588e3cf8c70a1ec52801a03b6ee1b6980009c0725f8a32ecfa8fe1a6dfad:init, a569d2c4-d397-5634-9dfe-21b2ab1a386a:b7dd588e3cf8c70a1ec52801a03b6ee1b6980009c0725f8a32ecfa8fe1a6dfad:loop, a569d2c4-d397-5634-9dfe-21b2ab1a386a:b7dd588e3cf8c70a1ec52801a03b6ee1b6980009c0725f8a32ecfa8fe1a6dfad:bailout

参数实验

步骤

  1. 使用固定配置:mode parameter-plane; center (-0.5, 0); zoom 0.4; rotation 0; iterations 96。运行一次并记录结果;再以同一配置重复运行。

观察要点

比较两次运行,记录`x2 = abs(real(z)) * abs(real(z))`是否得到相同的可见结果和迭代行为。

练习

找出与`x2 = abs(real(z)) * abs(real(z))`有关的源注释,并说明初始化、循环和终止测试的顺序。

完成检查

完成时列出所引用的三个注释键,并按`x2 = abs(real(z)) * abs(real(z))`对应的初始化、循环和终止顺序排列。

来源与权利

来源:

权利:

公式档案

buffalo

该 FractalPark 规范实现已发布并可运行。

buffalo 的确定性预览

规范源码

语言
frm-like/1
标准库
1
Profile 模式
parameter-plane
Profile 中心
-0.5, 0
Profile 缩放
0.4
Profile 迭代次数
96
Profile 证据等级
mechanical

参数

没有声明参数

规范源码

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

正在加载规范源码…

来源与当前实现

公式 ID
a569d2c4-d397-5634-9dfe-21b2ab1a386a
规范名称
buffalo
原始名称
buffalo
历史来源
FractalPark
当前实现
项目自有

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

对权利或署名有异议?

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