截断加双三棱柱(左形)及其对偶:用边与面着色

截断加双三棱柱(左形)及其对偶:用边与面着色
几何画板及绘图内容加载中,请稍等……
2021-03-16 00:01
本范例展示“Canonical Truncated Snub Cube(laevo)”及其对偶多面体在同一几何框架下的边、面着色效果,强调对偶关系带来的结构对应。核心数学概念包括:多面体的对偶(dual polyhedron)、立体几何的顶点—边—面网结构、基于几何位置的分类着色,以及球面/空间距离相关的构造与参数化控制。作图要点可从“构造摘要”提炼:使用 Sequence 生成参数序列并配合 If、Sort、First、KeepIf 完成条件筛选;通过 Sphere 与 Circle 建立球面与圆相关的参考几何,再借助 PointIn、Angle、Segment 来判断点落在结构区域内、计算角度并连接边;用 UnicodeToLetter、Textfield、TableText、Text 与表格/文本对象进行分组标注与信息显示;同时大量对象如 Vol、Vold 及 Vol_{sphere}、Vol_r、Vold_r 表示体积/球面体积等量的度量或对比。适合高中到大学入门的立体几何、计算机辅助几何建模、以及对多面体对偶与几何可视化感兴趣的教学或研究用途。

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. Sphere(O, r_o) → sp02d
  3. Textfield(R1sphere) → InputBox5
  4. Sphere(O, R1sphere) → sp01
  5. Textfield(r_o) → InputBox6
  6. Textfield(jarc) → InputBox8
  7. Textfield(jarc_d) → InputBox9
  8. Textfield(f_{Poly}) → InputBox11
  9. Textfield(k) → InputBox15
  10. Textfield(k_d) → InputBox14
  11. 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
  12. Textfield(iseg) → InputBox17
  13. Textfield(f_{Poly}d) → InputBox18
  14. Textfield(isegd) → InputBox19
  15. UnicodeToLetter(34) → u34
  16. 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
  17. Textfield(n_3) → InputBox20
  18. If(n_3 ≟ 0, "", Text["" + n_3]) → txt_3
  19. Textfield(nd_3) → InputBox21
  20. If(nd_3 ≟ 0, "", Text["" + nd_3]) → txtd_3
  21. Circle(A_{farbe}, rfabe) → farbekreis
  22. PointIn(farbekreis) → A
  23. Angle(A) → α
  24. Segment(C, D) → h
  25. Sequence(((zoom * Element[Element[A00, i], 1]), (zoom * Element[Element[A00, i], 2]), (zoom * Element[Element[A00, i], 3])), i, 1, Length[A00]) → A0
  26. Sort(Sequence[Segment[Element[A0d, Element[Element[nomd, i], 1]], Element[A0d, Element[Element[nomd, i], 2]]], i, 1, Length[nomd]]) → Segmentsd
  27. First(Segmentsd, id_s) → Segmentsd_o
  28. Sort(Sequence[Segment[Element[A0, Element[Element[nom, i], 1]], Element[A0, Element[Element[nom, i], 2]]], i, 1, Length[nom]]) → Segments
  29. First(Segments, i_s) → Segments_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. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segn, 5], Segments) → la5
  35. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segn, 6], Segments) → la6
  36. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segn, 7], Segments) → la7
  37. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segn, 8], Segments) → la8
  38. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segn, 9], Segments) → la9
  39. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segn, 10], Segments) → la10
  40. Sequence(Polygon[Sequence[A0(mm6(1, f, k)), k, 1, Length[mm6(1, 1)]]], f, 1, Length[mm6(1)]) → poly_{5}
  41. Sequence(Polygon[Sequence[A0(mm6(2, f, k)), k, 1, Length[mm6(2, 1)]]], f, 1, Length[mm6(2)]) → poly_{6}
  42. Sequence(Polygon[Sequence[A0(mm6(3, f, k)), k, 1, Length[mm6(3, 1)]]], f, 1, Length[mm6(3)]) → poly_{8}
  43. KeepIf(round((A * 10^(k))) / 10^(k) ≟ 4.376011, A, poly_{6}) → poly_{6}1
  44. KeepIf(round((A * 10^(k))) / 10^(k) ≟ 4.97852, A, poly_{6}) → poly_{6}2
  45. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segnd, 1], Segmentsd) → lad1
  46. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segnd, 2], Segmentsd) → lad2
  47. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segnd, 3], Segmentsd) → lad3
  48. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segnd, 4], Segmentsd) → lad4
  49. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segnd, 5], Segmentsd) → lad5
  50. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segnd, 6], Segmentsd) → lad6
  51. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segnd, 7], Segmentsd) → lad7
  52. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segnd, 8], Segmentsd) → lad8
  53. 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}
  54. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[poly_{3}Sd, 1], polyd_{3}) → polyd_{3}1
  55. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[poly_{3}Sd, 2], polyd_{3}) → polyd_{3}2
  56. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[poly_{3}Sd, 3], polyd_{3}) → polyd_{3}3
  57. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[poly_{3}Sd, 4], polyd_{3}) → polyd_{3}4
  58. KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[poly_{3}Sd, 5], polyd_{3}) → polyd_{3}5

AI 绘图提示语参考

在同一画面中构造“规范截断金角立方体(laevo)”及其对偶多面体的可视化,并突出对偶性带来的边与面的对应关系。先给定用于球面/圆形标定的基准与半径输入,再在多面体表面生成顶点、边与面,并使用分组索引或参数列表对边段与面多边形进行筛选与排序。对某些面按数值条件保留,得到不同法向面;同时从边段集合中按圆整后的阈值选出对应边。最后以平面色彩标记方案展示“橙色表示 n,蓝色表示 n/dual”,并用表格式文字给出边或面编号及其与对偶的对应标注,同时加入角度与线段度量以支持几何关系的解释。
以上提示语为根据原始绘图命令整理而来,仅供参考。