用迭代与自定义工具生成分形几何图:Floch 风格

用迭代与自定义工具生成分形几何图:Floch 风格
几何画板及绘图内容加载中,请稍等……
2024-11-14 23:01
本范例通过对线段反复进行旋转与拼接迭代,展示由“迭代规则”逐步生成的分形几何形态(Floch 风格的迭代图)。核心数学概念包括:几何变换中的旋转(Rotate)、迭代(Iteration)与递推构造、参数控制下的分形收敛/形态演化,以及由多段线首尾连接形成的折线/曲线边界(PolyLine、Join)。作图要点是:先用 Segment 构造基础点与线段(对象如 A、B 等),再通过 Rotate 按设定角度反复生成新线段;随后使用 Iteration 对“自定义工具/规则”进行多步迭代,把每一步产生的线段集合整理为可绘制结构(Flatten);再利用 PolyLine 和 Join 将迭代产生的片段连成折线形状,并通过 Unique 去除重复对象。范例还体现了自定义工具 Tool 与交互输入输出对象(如 lTool1、lInputTool3、l1OutputTool 等)在迭代流程中的作用。适合中学阶段到大学基础几何课程,用于“几何变换+数列/迭代+分形图形”综合教学与编程式建模训练。

GeoGebra 命令及参数

  1. Segment(A, B) → f
  2. Rotate(B, ((-pi)) / 3, A) → C
  3. Segment(B, C) → g
  4. Segment(C, A) → h
  5. Iteration(Zip[{Vertex[n, 1], Vertex[n, 2]}, n, Tool1[m]], m, {{{A, B}}}, a) → lTool1
  6. Flatten(Zip[{Dilate[Segment[Element[k, 1], Element[k, 2]], 1 / 3, Element[k, 1]], Translate[Rotate[Dilate[Segment[Element[k, 1], Element[k, 2]], 1 / 3, Element[k, 1]], pi / 3, Element[k, 1]], Vector[(1 / 3 * Vector[Element[k, 1], Element[k, 2]])]], Translate[Rotate[Dilate[Segment[Element[k, 1], Element[k, 2]], 1 / 3, Element[k, 2]], ((-pi)) / 3, Element[k, 2]], Vector[(1 / 3 * Vector[Element[k, 2], Element[k, 1]])]], Dilate[Segment[Element[k, 1], Element[k, 2]], 1 / 3, Element[k, 2]]}, k, m1InputTool12]) → l1OutputTool
  7. PolyLine(Unique[Flatten[lTool1]]) → i1
  8. Join(Zip[{{Element[k, 1], (2 / 3 * Element[k, 1]) + (1 / 3 * Element[k, 2])}, {(2 / 3 * Element[k, 1]) + (1 / 3 * Element[k, 2]), Rotate[(1 / 3 * Element[k, 1]) + (2 / 3 * Element[k, 2]), pi / 3, (2 / 3 * Element[k, 1]) + (1 / 3 * Element[k, 2])]}, {Rotate[(1 / 3 * Element[k, 1]) + (2 / 3 * Element[k, 2]), pi / 3, (2 / 3 * Element[k, 1]) + (1 / 3 * Element[k, 2])], (1 / 3 * Element[k, 1]) + (2 / 3 * Element[k, 2])}, {(1 / 3 * Element[k, 1]) + (2 / 3 * Element[k, 2]), Element[k, 2]}}, k, (m1InputTool12 * 1)]) → l1OutputTool2
  9. Iteration(Tool2[m], m, {{{A, B}}}, a) → lTool2
  10. PolyLine(Unique[Flatten[lTool2]]) → i2
  11. Unique(Flatten[Sequence[{Element[lInputTool3, i], (2 / 3 * Element[lInputTool3, i]) + (1 / 3 * Element[lInputTool3, i + 1]), Rotate[(1 / 3 * Element[lInputTool3, i]) + (2 / 3 * Element[lInputTool3, i + 1]), pi / 3, (2 / 3 * Element[lInputTool3, i]) + (1 / 3 * Element[lInputTool3, i + 1])], (1 / 3 * Element[lInputTool3, i]) + (2 / 3 * Element[lInputTool3, i + 1]), Element[lInputTool3, i + 1]}, i, 1, Length[lInputTool3] - 1]]) → l1OutputTool3
  12. Iteration(Tool3[m], m, {{A, B}}, a) → lTool3
  13. PolyLine(lTool3) → i3

AI 绘图提示语参考

以两点为起点先画一条基础线段,并在其端点处按给定角度做旋转得到新端点,再依次连出三条相互连接的线段形成本体(等比例缩放因子为1/3,旋转角为正负120°)。随后使用迭代规则:把当前线段按同样缩放与旋转变换生成多份副本,并把相邻副本的端点用分段折线依次拼接成一条连续边界曲线。最后对迭代产生的折线进行去重与合并,得到类似 Floch 风格的分形边界。
以上提示语为根据原始绘图命令整理而来,仅供参考。