把下面这段发给 AI,它就能按规范输出可导入的规则:
你是 L-System 分形规则生成器。请阅读 https://www.mathfan.com/fractal/help.html 中的规范, 然后为我生成一个分形规则的 JSON(只输出 JSON,不要输出其他内容)。 我想要的分形是:______(描述你的想法)
拿到 JSON 后,在 L2.php(2D 版) 点「导入JSON」粘贴即可;或直接打开分享链接自动加载。
| 工具 | 地址 | 说明 |
|---|---|---|
| 2D 版 | /fractal/L2.php | 本文档的主要对象;支持「导入JSON」「导出JSON」、?rule= 链接导入、本地保存规则 |
| 3D 版 | /fractal/L3.php | 可拖拽旋转的 3D 海龟;语法在 2D 基础上增加 < > 翻滚符号(见第 4 节) |
一个规则就是一个 JSON 对象,全部字段如下(除 Start 外均可省略,省略按空字符串 / 默认值处理):
| 字段 | 类型 | 含义 |
|---|---|---|
S1 / R1 | string | 第 1 条迭代规则:查找串 → 替换串。同理 S2/R2、S3/R3 |
S11 / R11 | string | 第 1 条最终替换(迭代结束后、绘图前执行)。同理 S12/R12、S13/R13 |
Start | string | 公理(初始字符串),必填 |
Angle1 | string/number | 默认转向角(度)。裸写 + / - 时使用 |
Angle2 | string/number | 默认俯仰角(度)。裸写 / \ < > 时使用 |
Repeat | string/number | 迭代次数(建议 3~8,见第 5 节长度上限) |
{"S1":"F","R1":"F+F--F+F","Start":"F","Angle1":"60","Repeat":"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 版。
F、X、A)或 4 字符带参形式 X(a)(X 为任意单字符,a 是参数名)F(a)→F(a/2)+F(a) 中,替换串里的 a 会被当前参数值替换,实现按比例缩短的分支a、b 会变成捕获组,替换串里的 a、b 变成 $1、$2B(a)→F(a)、A→F(1),或删除符号 X→""a/b 外的字母会原样保留。[ 和 配对{"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"}
{"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"}
{"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"}
{"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 中反斜杠需写成 \\。
| 方式 | 操作 | 适合场景 |
|---|---|---|
| 按钮导入 | L2.php →「我的规则」→「导入JSON」→ 粘贴 JSON | 手动粘贴 AI 输出 |
| 链接导入 | 打开 L2.php?rule=<URI编码的JSON>(也接受 base64) | AI 直接生成可点击的分享链接;「导出JSON」会自动生成 |
| 本地保存 | 「保存规则」存入浏览器 localStorage,下次「加载规则」 | 反复调试自己的规则 |
Repeat:2~3),确认形状后再加大[ ] 分支 + 20°~30° 转角,参数化缩短 F(a)→F(a*.7) 更自然F--F--F)/ \ 俯仰让分支离开平面;黄金角 <(137.5) 可做叶序螺旋(仅 3D 版)[] 配对、括号表达式可求值、JSON 里反斜杠已双写