截角二十面体及其对偶体的边面配色展示

截角二十面体及其对偶体的边面配色展示
几何画板及绘图内容加载中,请稍等……
2021-01-16 20:42
本范例演示“截角二十面体(Rectified Truncated Icosahedron)”的三维几何结构,并展示其对偶体(dual image)如何对应到边与面的配色方案。核心数学概念包括:对偶多面体与顶点—边—面的几何对应关系、立体几何中的分割/配对着色,以及以球面或球内约束为背景的向量与空间几何表达。作图要点:使用 Sphere 构造球面/参考约束,并用 PointIn 进行点在球面内的位置筛选;用 Sequence 生成离散元素集合;用 Circle 与 Segment 构成边界与线段结构;利用 Angle 计算/标定方向关系;通过 Sort、First、KeepIf 完成元素排序与条件保留;借助 TableText 与 Textfield/UnicodeToLetter 用于显示编号、表格化信息与交互输入。适合中学进阶到大学的几何建模与可视化教学,也可用于对称性、对偶思想与立体配色算法的探索。

GeoGebra 命令及参数

  1. Sequence(((zoom * Element[Element[A00d, i], 1]), (zoom * Element[Element[A00d, i], 2]), (zoom * Element[Element[A00d, i], 3])), i, 1, Length[A00d]) → A0d
  2. Sequence(((zoom * Element[Element[A00, i], 1]), (zoom * Element[Element[A00, i], 2]), (zoom * Element[Element[A00, i], 3])), i, 1, Length[A00]) → A0
  3. Sphere(O, r_o) → sp02d
  4. Textfield(R1sphere) → InputBox5
  5. Sphere(O, R1sphere) → sp01
  6. Textfield(r_o) → InputBox6
  7. Textfield(jarc) → InputBox8
  8. Textfield(jarc_d) → InputBox9
  9. Textfield(f_{Poly}) → InputBox11
  10. Textfield(k) → InputBox15
  11. Textfield(k_d) → InputBox14
  12. TableText({Append["i", 1…Length[mm5a]], Append["\fgcolor{orange}{n}", mm5a], Append["\fgcolor{orange}{N}", mm7a], Append["\fgcolor{#007FFF}{n/dual}", mm5ad], Append["\fgcolor{#007FFF}{N}", mm7ad]}, "hr") → text24
  13. Textfield(iseg) → InputBox17
  14. Textfield(f_{Poly}d) → InputBox18
  15. Textfield(isegd) → InputBox19
  16. UnicodeToLetter(34) → u34
  17. TableText({Append["i", 1…Max[Length[Segn], Length[Segnd]]], Append["\fgcolor{orange}{s_i}", Segn / Segments_o1], Append["\fgcolor{orange}{N}", lLength], Append["\fgcolor{#007FFF}{s_id}", Segnd / Segments_o1d], Append["\fgcolor{#007FFF}{N}", lLengthd]}, "hr") → text23
  18. Textfield(n_3) → InputBox20
  19. If(n_3 ≟ 0, "", Text["" + n_3]) → txt_3
  20. Textfield(nd_3) → InputBox21
  21. If(nd_3 ≟ 0, "", Text["" + nd_3]) → txtd_3
  22. Circle(A_{farbe}, rfabe) → farbekreis
  23. PointIn(farbekreis) → A
  24. Angle(A) → α
  25. Segment(C, D) → h
  26. Sort(Sequence[Segment[Element[A0, Element[Element[nom, i], 1]], Element[A0, Element[Element[nom, i], 2]]], i, 1, Length[nom]]) → Segments
  27. First(Segments, i_s) → Segments_o
  28. Sort(Sequence[Segment[Element[A0d, Element[Element[nomd, i], 1]], Element[A0d, Element[Element[nomd, i], 2]]], i, 1, Length[nomd]]) → Segmentsd
  29. First(Segmentsd, id_s) → Segmentsd_o
  30. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segn, 1], Segments) → la1
  31. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segn, 2], Segments) → la2
  32. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segn, 3], Segments) → la3
  33. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segn, 4], Segments) → la4
  34. Sequence(Polygon[Element[A0, Element[Element[mm1, f], 1]], Element[A0, Element[Element[mm1, f], 2]], Element[A0, Element[Element[mm1, f], 3]]], f, 1, Length[mm1]) → poly_{3}
  35. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[poly_{3}S, 1], poly_{3}) → poly_{3}1
  36. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[poly_{3}S, 2], poly_{3}) → poly_{3}2
  37. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[poly_{3}S, 3], poly_{3}) → poly_{3}3
  38. Sequence(Polygon[Sequence[A0(mm6(1, f, k)), k, 1, Length[mm6(1, 1)]]], f, 1, Length[mm6(1)]) → poly_{5}
  39. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segnd, 1], Segmentsd) → lad1
  40. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segnd, 2], Segmentsd) → lad2
  41. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segnd, 3], Segmentsd) → lad3
  42. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segnd, 4], Segmentsd) → lad4
  43. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segnd, 5], Segmentsd) → lad5
  44. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segnd, 6], Segmentsd) → lad6
  45. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segnd, 7], Segmentsd) → lad7
  46. Sequence(Polygon[Element[A0d, Element[Element[mm1d, f], 1]], Element[A0d, Element[Element[mm1d, f], 2]], Element[A0d, Element[Element[mm1d, f], 3]]], f, 1, Length[mm1d]) → polyd_{3}
  47. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[poly_{3}Sd, 1], polyd_{3}) → polyd_{3}1
  48. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[poly_{3}Sd, 2], polyd_{3}) → polyd_{3}2
  49. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[poly_{3}Sd, 3], polyd_{3}) → polyd_{3}3
  50. Sequence(Polygon[Sequence[A0d(mm6d(1, f, k)), k, 1, Length[mm6d(1, 1)]]], f, 1, Length[mm6d(1)]) → polyd_{4}

AI 绘图提示语参考

在三维空间中绘制一个以球面为参照的几何结构:先建立球面并生成一组位于球面附近的离散点与多边形顶点,然后对由圆弧形成的边界与直线边进行组合,得到具有截角—加倍/整化特征的多面体外形。再依据多面体对偶关系,在同一球面坐标框架下构造其对偶对应的顶点、边与面,并分别对边与面采用统一的配色方案(给出原图与对偶的编号/索引对应)。最后用同一套索引规则筛选相应的边段集合,分别形成两套多边形面片与其对偶面片,并以曲线边界与直线边共同呈现其对称结构。
以上提示语为根据原始绘图命令整理而来,仅供参考。