Escher, Circle Limit I:圆与多边形的几何构造

Escher, Circle Limit I:圆与多边形的几何构造
几何画板及绘图内容加载中,请稍等……
2025-08-19 02:07
所属专题 Teselaciones regulares
这个范例展示了Escher的圆极限艺术,通过几何作图呈现无限递归的圆与多边形。核心数学概念包括圆、几何构造、解析几何和函数图像。作图要点涉及Circle、Intersect、Sequence、CircumcircleArc等GeoGebra命令,以及多边形和圆的动态交互。适合高中生或数学爱好者,用于理解几何极限和图形变换。

GeoGebra 命令及参数

  1. Circle((0, 0), 1) → c
  2. Intersect(Circle[((1 - (sin(pi / p) / cos(pi / q))^(2))^(-1 / 2), 0), ((cos(pi / q) / sin(pi / p))^(2) - 1)^(-1 / 2)], Ray[(0, 0), Rotate[(1, 0), pi / p]], 1) → P0
  3. Sequence(Rotate[P0, ((k * 2) * pi / p)], k, 0, p - 1) → V
  4. Circle(Mirror[V(p), c], V(p), V(1)) → hc1
  5. Flatten(Join[{{Vac(p)}, {Vac \ {Vac(p)}}}]) → Vacp
  6. Flatten(Join[{{Vac \ {Vac(1)}}, {Vac(1)}}]) → Vac2
  7. Sequence(Sequence[Polygon[esc(1, a, b)], b, 1, Length[esc(1, a)]], a, 1, Length[esc(1)]) → escB, {{0.030097360750000003, 0.030098480749999997, 0.021107711350000013, 0.021106374600000012}, {0.030097140900000003, 0.030097140900000003, 0.021106346000000005, 0.021106346000000005}, {0.030098480749999997, 0.030097360750000003, 0.021106374600000012, 0.021107711350000013}}
  8. Sequence(Sequence[Polygon[esc(2, a, b)], b, 1, Length[esc(2, a)]], a, 1, Length[esc(2)]) → escN, {{0.02025516735, 0.020255621250000015, 0.03288572365, 0.03288643389999999}, {0.020254864450000014, 0.020254776500000023, 0.032886634299999995, 0.032886159299999995}, {0.02025586215000002, 0.0202555881, 0.032886945149999985, 0.03288555174999999}}
  9. Sequence(Sequence[Circle[esc(5, a, b, 1), esc(5, a, b, 2)], b, 1, Length[esc(5, a)]], a, 1, Length[esc(5)]) → escOb, {{(x - 0.32909)² + (y - 0.02447)² = 0.00015831399999999954, (x + 0.14336)² + (y - 0.29724)² = 0.00015818650000000043, (x - 0.25823)² + (y - 0.30039)² = 0.0001620385000000002, (x - 0.13103)² + (y - 0.37383)² = 0.00016207119999999984}, {(x + 0.18574)² + (y - 0.27277)² = 0.00015811300000000033, (x + 0.18574)² + (y + 0.27277)² = 0.00015811300000000033, (x + 0.38926)² + (y - 0.07344)² = 0.00016196129999999985, (x + 0.38926)² + (y + 0.07344)² = 0.00016196129999999985}, {(x + 0.14335)² + (y + 0.29724)² = 0.00015830820000000027, (x - 0.3291)² + (y + 0.02447)² = 0.0001580624999999993, (x - 0.13103)² + (y + 0.37383)² = 0.00016207119999999984, (x - 0.25823)² + (y + 0.30039)² = 0.0001620385000000002}}
  10. Sequence(Sequence[Circle[esc(3, a, b, 1), esc(3, a, b, 2)], b, 1, Length[esc(3, a)]], a, 1, Length[esc(3)]) → escObf, {{(x - 0.11602)² + (y - 0.10873)² = 0.0009165073999999994, (x - 0.03615)² + (y - 0.15484)² = 0.0009165712000000004, (x - 0.39838)² + (y - 0.19685)² = 0.0004461865999999987, (x + 0.02871)² + (y - 0.44344)² = 0.00044613970000000064}, {(x + 0.15217)² + (y - 0.04611)² = 0.0009162362000000005, (x + 0.15217)² + (y + 0.04611)² = 0.0009162362000000005, (x + 0.36967)² + (y - 0.24658)² = 0.00044633920000000047, (x + 0.36967)² + (y + 0.24658)² = 0.00044633920000000047}, {(x - 0.03615)² + (y + 0.15484)² = 0.0009165712000000004, (x - 0.11602)² + (y + 0.10873)² = 0.0009165073999999994, (x + 0.02871)² + (y + 0.44344)² = 0.00044613970000000064, (x - 0.39838)² + (y + 0.19685)² = 0.0004461865999999987}}
  11. Sequence(Sequence[Circle[esc(6, a, b, 1), esc(6, a, b, 2)], b, 1, Length[esc(6, a)]], a, 1, Length[esc(6)]) → escOn, {{(x - 0.11602)² + (y - 0.10873)² = 0.00029768329999999975, (x - 0.03615)² + (y - 0.15484)² = 0.00029758930000000044, (x - 0.39838)² + (y - 0.19685)² = 0.00013920569999999972, (x + 0.02871)² + (y - 0.44344)² = 0.00013905489999999996}, {(x + 0.15217)² + (y - 0.04611)² = 0.0002973220999999997, (x + 0.15217)² + (y + 0.04611)² = 0.0002973220999999997, (x + 0.36967)² + (y - 0.24658)² = 0.00013929800000000054, (x + 0.36967)² + (y + 0.24658)² = 0.00013929800000000054}, {(x - 0.03615)² + (y + 0.15484)² = 0.00029758930000000044, (x - 0.11602)² + (y + 0.10873)² = 0.00029768329999999975, (x + 0.02871)² + (y + 0.44344)² = 0.00013905489999999996, (x - 0.39838)² + (y + 0.19685)² = 0.00013920569999999972}}
  12. Sequence(Sequence[Circle[esc(4, a, b, 1), esc(4, a, b, 2)], b, 1, Length[esc(4, a)]], a, 1, Length[esc(4)]) → escOnf, {{(x - 0.32909)² + (y - 0.02447)² = 0.00038773970000000046, (x + 0.14336)² + (y - 0.29724)² = 0.0003876605000000007, (x - 0.25823)² + (y - 0.30039)² = 0.0003633341000000008, (x - 0.13103)² + (y - 0.37383)² = 0.0003630604999999999}, {(x + 0.18574)² + (y - 0.27277)² = 0.0003873936999999998, (x + 0.18574)² + (y + 0.27277)² = 0.0003873936999999998, (x + 0.38926)² + (y - 0.07344)² = 0.00036316800000000117, (x + 0.38926)² + (y + 0.07344)² = 0.00036316800000000117}, {(x + 0.14336)² + (y + 0.29724)² = 0.0003876605000000007, (x - 0.32909)² + (y + 0.02447)² = 0.00038773970000000046, (x - 0.13103)² + (y + 0.37383)² = 0.0003630604999999999, (x - 0.25823)² + (y + 0.30039)² = 0.0003633341000000008}}
  13. Sequence(Sequence[Polygon[esc0(1, a, b)], b, 1, Length[esc0(1, a)]], a, 1, Length[esc0(1)]) → escB0, {{0.030097360750000003, 0.030098480749999997, 0.021107711350000013, 0.021106374600000012}, {0.030097140900000003, 0.030097140900000003, 0.021106346000000005, 0.021106346000000005}, {0.030098480749999997, 0.030097360750000003, 0.021106374600000012, 0.021107711350000013}}
  14. Sequence(Sequence[Polygon[esc0(2, a, b)], b, 1, Length[esc0(2, a)]], a, 1, Length[esc0(2)]) → escN0, {{0.02025516735, 0.020255621250000015, 0.03288572365, 0.03288643389999999}, {0.020254864450000014, 0.020254776500000023, 0.032886634299999995, 0.032886159299999995}, {0.02025586215000002, 0.0202555881, 0.032886945149999985, 0.03288555174999999}}
  15. Sequence(Sequence[Circle[esc0(5, a, b, 1), esc0(5, a, b, 2)], b, 1, Length[esc0(5, a)]], a, 1, Length[esc0(5)]) → escOb0, {{(x - 0.32909)² + (y - 0.02447)² = 0.00015831399999999954, (x + 0.14336)² + (y - 0.29724)² = 0.00015818650000000043, (x - 0.25823)² + (y - 0.30039)² = 0.0001620385000000002, (x - 0.13103)² + (y - 0.37383)² = 0.00016207119999999984}, {(x + 0.18574)² + (y - 0.27277)² = 0.00015811300000000033, (x + 0.18574)² + (y + 0.27277)² = 0.00015811300000000033, (x + 0.38926)² + (y - 0.07344)² = 0.00016196129999999985, (x + 0.38926)² + (y + 0.07344)² = 0.00016196129999999985}, {(x + 0.14335)² + (y + 0.29724)² = 0.00015830820000000027, (x - 0.3291)² + (y + 0.02447)² = 0.0001580624999999993, (x - 0.13103)² + (y + 0.37383)² = 0.00016207119999999984, (x - 0.25823)² + (y + 0.30039)² = 0.0001620385000000002}}
  16. Sequence(Sequence[Circle[esc0(3, a, b, 1), esc0(3, a, b, 2)], b, 1, Length[esc0(3, a)]], a, 1, Length[esc0(3)]) → escObf0, {{(x - 0.11602)² + (y - 0.10873)² = 0.0009165073999999994, (x - 0.03615)² + (y - 0.15484)² = 0.0009165712000000004, (x - 0.39838)² + (y - 0.19685)² = 0.0004461865999999987, (x + 0.02871)² + (y - 0.44344)² = 0.00044613970000000064}, {(x + 0.15217)² + (y - 0.04611)² = 0.0009162362000000005, (x + 0.15217)² + (y + 0.04611)² = 0.0009162362000000005, (x + 0.36967)² + (y - 0.24658)² = 0.00044633920000000047, (x + 0.36967)² + (y + 0.24658)² = 0.00044633920000000047}, {(x - 0.03615)² + (y + 0.15484)² = 0.0009165712000000004, (x - 0.11602)² + (y + 0.10873)² = 0.0009165073999999994, (x + 0.02871)² + (y + 0.44344)² = 0.00044613970000000064, (x - 0.39838)² + (y + 0.19685)² = 0.0004461865999999987}}
  17. Sequence(Sequence[Circle[esc0(6, a, b, 1), esc0(6, a, b, 2)], b, 1, Length[esc0(6, a)]], a, 1, Length[esc0(6)]) → escOn0, {{(x - 0.11602)² + (y - 0.10873)² = 0.00029768329999999975, (x - 0.03615)² + (y - 0.15484)² = 0.00029758930000000044, (x - 0.39838)² + (y - 0.19685)² = 0.00013920569999999972, (x + 0.02871)² + (y - 0.44344)² = 0.00013905489999999996}, {(x + 0.15217)² + (y - 0.04611)² = 0.0002973220999999997, (x + 0.15217)² + (y + 0.04611)² = 0.0002973220999999997, (x + 0.36967)² + (y - 0.24658)² = 0.00013929800000000054, (x + 0.36967)² + (y + 0.24658)² = 0.00013929800000000054}, {(x - 0.03615)² + (y + 0.15484)² = 0.00029758930000000044, (x - 0.11602)² + (y + 0.10873)² = 0.00029768329999999975, (x + 0.02871)² + (y + 0.44344)² = 0.00013905489999999996, (x - 0.39838)² + (y + 0.19685)² = 0.00013920569999999972}}
  18. Sequence(Sequence[Circle[esc0(4, a, b, 1), esc0(4, a, b, 2)], b, 1, Length[esc0(4, a)]], a, 1, Length[esc0(4)]) → escOnf0, {{(x - 0.32909)² + (y - 0.02447)² = 0.00038773970000000046, (x + 0.14336)² + (y - 0.29724)² = 0.0003876605000000007, (x - 0.25823)² + (y - 0.30039)² = 0.0003633341000000008, (x - 0.13103)² + (y - 0.37383)² = 0.0003630604999999999}, {(x + 0.18574)² + (y - 0.27277)² = 0.0003873936999999998, (x + 0.18574)² + (y + 0.27277)² = 0.0003873936999999998, (x + 0.38926)² + (y - 0.07344)² = 0.00036316800000000117, (x + 0.38926)² + (y + 0.07344)² = 0.00036316800000000117}, {(x + 0.14336)² + (y + 0.29724)² = 0.0003876605000000007, (x - 0.32909)² + (y + 0.02447)² = 0.00038773970000000046, (x - 0.13103)² + (y + 0.37383)² = 0.0003630604999999999, (x - 0.25823)² + (y + 0.30039)² = 0.0003633341000000008}}
  19. Intersect(hc1, Ray[(V(1) + V(p)) / 2, (0, 0)]) → V0,
  20. CircumcircleArc(V(p), V0, V(1)) → arcoCelda
  21. Join(Sequence[Rotate[Sequence[Point[arcoCelda, s], s, 0, 0.9, 0.1], ((2 * k) * pi / p)], k, 0, p - 1]) → celda0
  22. Sequence({Vac(k), q - 1, ncActual}, k, 3, p - 1) → Vplus
  23. If(floor(p / 2) ≠ p / 2 ∧ q ≟ 3, 4, floor(q / 2) ≟ q / 2, 2, 3) → nc
  24. Sequence({V(k), q - 1, 0}, k, 1, p) → vert0
  25. Flatten(Join[{{Vac \ {Vac(1), Vac(2)}}, {Vac(1), Vac(2)}}]) → Vac2'
  26. Flatten(Join[{{Vac(p - 1), Vac(p)}, {Vac \ {Vac(p - 1), Vac(p)}}}]) → Vacp'