毕达哥拉斯树的脚本分形构造与旋转迭代

毕达哥拉斯树的脚本分形构造与旋转迭代
几何画板及绘图内容加载中,请稍等……
2021-01-23 11:47
该示例通过递推旋转与半圆/直角三角形的组合,展示“毕达哥拉斯树”分形从基础三角形不断生成的自相似图形。核心数学概念包括:分形几何(自相似与迭代)、直角三角形与勾股思想、角度度量与旋转变换、几何构造中的中点与圆弧(用半圆近似/表征)。作图要点:脚本使用 Sequence 进行递推层数控制,并用 Zip/Remove 对象集合进行批量管理;通过 Polygon 构造三角形与多边形片段;借助 Midpoint 计算分割点;用 Semicircle 生成半圆与圆弧几何对象;使用 Point、Angle 确定关键点与角度参数;利用 Rotate 与 BasePoints 实现围绕基点的旋转迭代;再结合 Join 将多段几何连接成完整树形结构。对象管理方面包含若干按钮/名称变量(如 button1、Sname、Tname)以及多层点集(pointsBase、points1、points2)以实现分层生成与显示切换。适合中学数学到大学基础的几何建模与分形入门学习,也可用于课堂演示迭代构造、变换几何与递推思想。

GeoGebra 命令及参数

  1. Sequence(1, M) → Lm
  2. Sequence(1, N) → LN
  3. Zip("S" + (Text[n]), n, LN) → Sname
  4. Sequence(k, k, 1, 2^(2), 2) → S1
  5. Sequence(k, k, 1, 2^(3), 2) → S2
  6. Sequence(k, k, 1, 2^(4), 2) → S3
  7. Sequence(k, k, 1, 2^(5), 2) → S4
  8. Sequence(k, k, 1, 2^(6), 2) → S5
  9. Sequence(k, k, 1, 2^(7), 2) → S6
  10. Sequence(k, k, 1, 2^(8), 2) → S7
  11. Remove(LN, {1}) → LK
  12. Zip("T" + (Text[n]), n, LK) → Tname
  13. Sequence(k, k, 1, 2^(3), 4) → T2
  14. Sequence(k, k, 1, 2^(4), 4) → T3
  15. Sequence(k, k, 1, 2^(5), 4) → T4
  16. Sequence(k, k, 1, 2^(6), 4) → T5
  17. Sequence(k, k, 1, 2^(7), 4) → T6
  18. Sequence(k, k, 1, 2^(8), 4) → T7
  19. Polygon(A, B, 4) → base, f, g, h, i, C, D
  20. Midpoint(C, D) → E
  21. Semicircle(D, C) → arc
  22. Point(arc) → F
  23. Angle(C, E, F) → α
  24. Rotate(C, α, E) → C'
  25. Rotate(C, α, E) → C'_1
  26. BasePoints(A, B, α) → points1
  27. Join(Zip[BasePoints[Element[points1, k], Element[points1, k + 1], α], k, S1]) → points2
  28. Join(Zip[BasePoints[Element[points2, k], Element[points2, k + 1], α], k, S2]) → points3
  29. Join(Zip[BasePoints[Element[points3, k], Element[points3, k + 1], α], k, S3]) → points4
  30. Join(Zip[BasePoints[Element[points4, k], Element[points4, k + 1], α], k, S4]) → points5
  31. Join(Zip[BasePoints[Element[points5, k], Element[points5, k + 1], α], k, S5]) → points6
  32. Join(Zip[BasePoints[Element[points6, k], Element[points6, k + 1], α], k, S6]) → points7
  33. Join(Zip[BasePoints[Element[points7, k], Element[points7, k + 1], α], k, S7]) → points8
  34. Zip(Polygon[Element[points1, k], Element[points1, k + 1], 4], k, S1) → squares1
  35. Zip(Polygon[Element[points2, k], Element[points2, k + 1], 4], k, S2) → squares2
  36. Zip(Polygon[Element[points3, k], Element[points3, k + 1], 4], k, S3) → squares3
  37. Zip(Polygon[Element[points4, k], Element[points4, k + 1], 4], k, S4) → squares4
  38. Zip(Polygon[Element[points5, k], Element[points5, k + 1], 4], k, S5) → squares5
  39. Zip(Polygon[Element[points6, k], Element[points6, k + 1], 4], k, S6) → squares6
  40. Zip(Polygon[Element[points7, k], Element[points7, k + 1], 4], k, S7) → squares7
  41. Polygon(points1) → triangles1
  42. Zip(Polygon[Element[points2, k], Element[points2, k + 1], Element[points2, k + 3]], k, T2) → triangles2
  43. Zip(Polygon[Element[points3, k], Element[points3, k + 1], Element[points3, k + 3]], k, T3) → triangles3
  44. Zip(Polygon[Element[points4, k], Element[points4, k + 1], Element[points4, k + 3]], k, T4) → triangles4
  45. Zip(Polygon[Element[points5, k], Element[points5, k + 1], Element[points5, k + 3]], k, T5) → triangles5
  46. Zip(Polygon[Element[points6, k], Element[points6, k + 1], Element[points6, k + 3]], k, T6) → triangles6
  47. Zip(Polygon[Element[points7, k], Element[points7, k + 1], Element[points7, k + 3]], k, T7) → triangles7

AI 绘图提示语参考

从一条底边开始,构造一个正方形,并在其上方以底边为直径画一个半圆。在半圆上取一点,连接该点与底边中点,形成直角三角形,并测量该角。以该角为旋转参数,将正方形绕底边中点旋转,生成新的分支点集。随后,对每个新分支重复此过程:以相邻两点为边构造正方形,再在正方形上方构造半圆并取点,继续旋转生成下一层。如此迭代多层,形成由大小递减的正方形和直角三角形组成的毕达哥拉斯树分形图案。
以上提示语为根据原始绘图命令整理而来,仅供参考。