MathFan · 分形实验室 · 2D 工具 · 3D 工具

L-System 分形规则格式说明(AI 友好版)

本文档同时写给人类和 AI:按下面的规范生成一个 JSON,就能在 MathFan 分形工具中一键绘制。可直接把本页 URL 发给任何 AI 助手。

0给 AI 的一句话提示词

把下面这段发给 AI,它就能按规范输出可导入的规则:

你是 L-System 分形规则生成器。请阅读 https://www.mathfan.com/fractal/help.html 中的规范,
然后为我生成一个分形规则的 JSON(只输出 JSON,不要输出其他内容)。
我想要的分形是:______(描述你的想法)

拿到 JSON 后,在 L2.php(2D 版) 点「导入JSON」粘贴即可;或直接打开分享链接自动加载。

1工具入口

工具地址说明
2D 版/fractal/L2.php本文档的主要对象;支持「导入JSON」「导出JSON」、?rule= 链接导入、本地保存规则
3D 版/fractal/L3.php可拖拽旋转的 3D 海龟;语法在 2D 基础上增加 < > 翻滚符号(见第 4 节)

2规则 JSON 字段定义

一个规则就是一个 JSON 对象,全部字段如下(除 Start 外均可省略,省略按空字符串 / 默认值处理):

字段类型含义
S1 / R1string第 1 条迭代规则:查找串 → 替换串。同理 S2/R2、S3/R3
S11 / R11string第 1 条最终替换(迭代结束后、绘图前执行)。同理 S12/R12、S13/R13
Startstring公理(初始字符串),必填
Angle1string/number默认转向角(度)。裸写 + / - 时使用
Angle2string/number默认俯仰角(度)。裸写 / \ < > 时使用
Repeatstring/number迭代次数(建议 3~8,见第 5 节长度上限)
最小可用示例:{"S1":"F","R1":"F+F--F+F","Start":"F","Angle1":"60","Repeat":"3"}

3海龟绘图语法

符号含义示例
F(len)向前画一段长度为 len 的线段;F 裸写时长度由「最终替换」决定F(100)
+ -左转 / 右转。裸写用 Angle1;+(角度) 为显式角度+(72)
/ \俯仰(3D 转向)。裸写用 Angle2;显式写法 /(30)\(69)
< >翻滚(绕前进轴旋转)。仅 3D 版 L3.php 支持<(137.5)
[ ]分支:压栈 / 出栈(保存并恢复位置和方向)[+F][-F]
(表达式)括号内是 JS 表达式,迭代时求值,可用 a 参数与 Math 函数F(a/2)、F(a*.7)

2D 版只投影 x/y 平面;带俯仰的规则在 2D 版会「压扁」显示,想看立体效果请用 3D 版。

4迭代规则与最终替换的区别(重要)

迭代规则 S/R(重复执行 Repeat 次)

最终替换 S1x/R1x(迭代结束后执行一次,用于「翻译成绘图指令」)

常见坑:迭代规则查找串长度必须是 1 或 4(带参);括号内是可求值的 JS 表达式;替换串里除了 a/b 外的字母会原样保留。

5引擎约束

6完整示例(可直接复制导入)

科赫曲线(Koch Curve,2D)
{"S1":"F","R1":"F+F--F+F","S2":"","R2":"","S3":"","R3":"","S11":"F","R11":"F(1)","S12":"","R12":"","S13":"","R13":"","Start":"F","Angle1":"60","Angle2":"0","Repeat":"4"}

在工具中打开

龙形曲线(Dragon Curve,2D)
{"S1":"X","R1":"X+YF+","S2":"Y","R2":"-FX-Y","S3":"","R3":"","S11":"F","R11":"F(1)","S12":"X","R12":"","S13":"Y","R13":"","Start":"FX","Angle1":"90","Angle2":"0","Repeat":"8"}

在工具中打开

分形植物(Fractal Plant,2D)
{"S1":"X","R1":"F-[[X]+X]+F[+FX]-X","S2":"F","R2":"FF","S3":"","R3":"","S11":"F","R11":"F(1)","S12":"X","R12":"","S13":"","R13":"","Start":"X","Angle1":"25","Angle2":"0","Repeat":"6"}

在工具中打开

三维分形树(3D Tree,请用 3D 版查看)
{"S1":"F(a)","R1":"\\B(a)[+\\(110)F(.6*a)][+/F(.7*a)][+/(90)F(.4*a)]","S2":"","R2":"","S3":"","R3":"","S11":"B(a)","R11":"F(a)\\(10)","S12":"","R12":"","S13":"","R13":"","Start":"B(200)[+F(160)][+\\F(100)][+/F(40)]","Angle1":"30","Angle2":"150","Repeat":"5"}

该规则含俯仰角,建议在 3D 版 体验拖拽旋转。JSON 中反斜杠需写成 \\。

7三种导入方式

方式操作适合场景
按钮导入L2.php →「我的规则」→「导入JSON」→ 粘贴 JSON手动粘贴 AI 输出
链接导入打开 L2.php?rule=<URI编码的JSON>(也接受 base64)AI 直接生成可点击的分享链接;「导出JSON」会自动生成
本地保存「保存规则」存入浏览器 localStorage,下次「加载规则」反复调试自己的规则

8给 AI 的生成建议