哈特-海伊龙分形

哈特-海伊龙分形
几何画板及绘图内容加载中,请稍等……
2018-10-30 07:12
①本范例演示了哈特-海伊龙分形的构造过程与迭代特性;②涉及的核心数学概念包括分形几何、迭代序列、几何变换;③作图要点——使用了PolyLine命令绘制多边形,通过按钮控制迭代次数n,定义初始点A1、A2、A3及变换参数m、b,并分步执行变换操作step1至step13;④适合高中及以上数学学习者,用于理解分形图案的生成原理与几何变换应用。

GeoGebra 命令及参数

  1. PolyLine(A1, A2, A3) → step1
  2. PolyLine(Join[{Join[Sequence[{Vertex[step1, (2 * k) - 1], Dilate[Rotate[Vertex[step1, (2 * k)], 315°, Vertex[step1, (2 * k) - 1]], 1 / sqrt(2), Vertex[step1, (2 * k) - 1]], Vertex[step1, (2 * k)], Dilate[Rotate[Vertex[step1, (2 * k) + 1], 45°, Vertex[step1, (2 * k)]], 1 / sqrt(2), Vertex[step1, (2 * k)]]}, k, 1, (Length[{Vertex[step1]}] - 1) / 2]], {Vertex[step1, Length[{Vertex[step1]}]]}}]) → step2
  3. PolyLine(Join[{Join[Sequence[{Vertex[step2, (2 * k) - 1], Dilate[Rotate[Vertex[step2, (2 * k)], 315°, Vertex[step2, (2 * k) - 1]], 1 / sqrt(2), Vertex[step2, (2 * k) - 1]], Vertex[step2, (2 * k)], Dilate[Rotate[Vertex[step2, (2 * k) + 1], 45°, Vertex[step2, (2 * k)]], 1 / sqrt(2), Vertex[step2, (2 * k)]]}, k, 1, (Length[{Vertex[step2]}] - 1) / 2]], {Vertex[step2, Length[{Vertex[step2]}]]}}]) → step3
  4. PolyLine(Join[{Join[Sequence[{Vertex[step3, (2 * k) - 1], Dilate[Rotate[Vertex[step3, (2 * k)], 315°, Vertex[step3, (2 * k) - 1]], 1 / sqrt(2), Vertex[step3, (2 * k) - 1]], Vertex[step3, (2 * k)], Dilate[Rotate[Vertex[step3, (2 * k) + 1], 45°, Vertex[step3, (2 * k)]], 1 / sqrt(2), Vertex[step3, (2 * k)]]}, k, 1, (Length[{Vertex[step3]}] - 1) / 2]], {Vertex[step3, Length[{Vertex[step3]}]]}}]) → step4
  5. PolyLine(Join[{Join[Sequence[{Vertex[step4, (2 * k) - 1], Dilate[Rotate[Vertex[step4, (2 * k)], 315°, Vertex[step4, (2 * k) - 1]], 1 / sqrt(2), Vertex[step4, (2 * k) - 1]], Vertex[step4, (2 * k)], Dilate[Rotate[Vertex[step4, (2 * k) + 1], 45°, Vertex[step4, (2 * k)]], 1 / sqrt(2), Vertex[step4, (2 * k)]]}, k, 1, (Length[{Vertex[step4]}] - 1) / 2]], {Vertex[step4, Length[{Vertex[step4]}]]}}]) → step5
  6. PolyLine(Join[{Join[Sequence[{Vertex[step5, (2 * k) - 1], Dilate[Rotate[Vertex[step5, (2 * k)], 315°, Vertex[step5, (2 * k) - 1]], 1 / sqrt(2), Vertex[step5, (2 * k) - 1]], Vertex[step5, (2 * k)], Dilate[Rotate[Vertex[step5, (2 * k) + 1], 45°, Vertex[step5, (2 * k)]], 1 / sqrt(2), Vertex[step5, (2 * k)]]}, k, 1, (Length[{Vertex[step5]}] - 1) / 2]], {Vertex[step5, Length[{Vertex[step5]}]]}}]) → step6
  7. PolyLine(Join[{Join[Sequence[{Vertex[step6, (2 * k) - 1], Dilate[Rotate[Vertex[step6, (2 * k)], 315°, Vertex[step6, (2 * k) - 1]], 1 / sqrt(2), Vertex[step6, (2 * k) - 1]], Vertex[step6, (2 * k)], Dilate[Rotate[Vertex[step6, (2 * k) + 1], 45°, Vertex[step6, (2 * k)]], 1 / sqrt(2), Vertex[step6, (2 * k)]]}, k, 1, (Length[{Vertex[step6]}] - 1) / 2]], {Vertex[step6, Length[{Vertex[step6]}]]}}]) → step7
  8. PolyLine(Join[{Join[Sequence[{Vertex[step7, (2 * k) - 1], Dilate[Rotate[Vertex[step7, (2 * k)], 315°, Vertex[step7, (2 * k) - 1]], 1 / sqrt(2), Vertex[step7, (2 * k) - 1]], Vertex[step7, (2 * k)], Dilate[Rotate[Vertex[step7, (2 * k) + 1], 45°, Vertex[step7, (2 * k)]], 1 / sqrt(2), Vertex[step7, (2 * k)]]}, k, 1, (Length[{Vertex[step7]}] - 1) / 2]], {Vertex[step7, Length[{Vertex[step7]}]]}}]) → step8
  9. PolyLine(Join[{Join[Sequence[{Vertex[step8, (2 * k) - 1], Dilate[Rotate[Vertex[step8, (2 * k)], 315°, Vertex[step8, (2 * k) - 1]], 1 / sqrt(2), Vertex[step8, (2 * k) - 1]], Vertex[step8, (2 * k)], Dilate[Rotate[Vertex[step8, (2 * k) + 1], 45°, Vertex[step8, (2 * k)]], 1 / sqrt(2), Vertex[step8, (2 * k)]]}, k, 1, (Length[{Vertex[step8]}] - 1) / 2]], {Vertex[step8, Length[{Vertex[step8]}]]}}]) → step9
  10. PolyLine(Join[{Join[Sequence[{Vertex[step9, (2 * k) - 1], Dilate[Rotate[Vertex[step9, (2 * k)], 315°, Vertex[step9, (2 * k) - 1]], 1 / sqrt(2), Vertex[step9, (2 * k) - 1]], Vertex[step9, (2 * k)], Dilate[Rotate[Vertex[step9, (2 * k) + 1], 45°, Vertex[step9, (2 * k)]], 1 / sqrt(2), Vertex[step9, (2 * k)]]}, k, 1, (Length[{Vertex[step9]}] - 1) / 2]], {Vertex[step9, Length[{Vertex[step9]}]]}}]) → step10
  11. PolyLine(Join[{Join[Sequence[{Vertex[step10, (2 * k) - 1], Dilate[Rotate[Vertex[step10, (2 * k)], 315°, Vertex[step10, (2 * k) - 1]], 1 / sqrt(2), Vertex[step10, (2 * k) - 1]], Vertex[step10, (2 * k)], Dilate[Rotate[Vertex[step10, (2 * k) + 1], 45°, Vertex[step10, (2 * k)]], 1 / sqrt(2), Vertex[step10, (2 * k)]]}, k, 1, (Length[{Vertex[step10]}] - 1) / 2]], {Vertex[step10, Length[{Vertex[step10]}]]}}]) → step11
  12. PolyLine(Join[{Join[Sequence[{Vertex[step11, (2 * k) - 1], Dilate[Rotate[Vertex[step11, (2 * k)], 315°, Vertex[step11, (2 * k) - 1]], 1 / sqrt(2), Vertex[step11, (2 * k) - 1]], Vertex[step11, (2 * k)], Dilate[Rotate[Vertex[step11, (2 * k) + 1], 45°, Vertex[step11, (2 * k)]], 1 / sqrt(2), Vertex[step11, (2 * k)]]}, k, 1, (Length[{Vertex[step11]}] - 1) / 2]], {Vertex[step11, Length[{Vertex[step11]}]]}}]) → step12
  13. PolyLine(Join[{Join[Sequence[{Vertex[step12, (2 * k) - 1], Dilate[Rotate[Vertex[step12, (2 * k)], 315°, Vertex[step12, (2 * k) - 1]], 1 / sqrt(2), Vertex[step12, (2 * k) - 1]], Vertex[step12, (2 * k)], Dilate[Rotate[Vertex[step12, (2 * k) + 1], 45°, Vertex[step12, (2 * k)]], 1 / sqrt(2), Vertex[step12, (2 * k)]]}, k, 1, (Length[{Vertex[step12]}] - 1) / 2]], {Vertex[step12, Length[{Vertex[step12]}]]}}]) → step13