Edge/Face Coloring of a Rectified Truncated Icosahedron and Its Dual

Edge/Face Coloring of a Rectified Truncated Icosahedron and Its Dual
Loading the math board and drawing, please wait…
2021-01-16 20:42
This example demonstrates the 3D geometry of a rectified truncated icosahedron and visualizes its dual image, using a consistent scheme to color edges and faces. It highlights key ideas from polyhedral geometry: duality between polyhedra, the correspondence among vertices/edges/faces, and geometric visualization of symmetric structures on a spherical reference. Construction-wise, it uses Sphere to set a spherical reference/constraint, PointIn to select points relative to the sphere, Sequence to generate discrete elements, and Circle plus Segment to build curved boundaries and straight edges. Angle supports orientation/relationship calculations, while Sort, First, and KeepIf manage ordering and conditional filtering of generated parts. TableText and Textfield (together with UnicodeToLetter) provide labeled readouts and interactive control for the coloring/structure indexing. Suitable for advanced secondary students, undergraduate geometry courses, and anyone interested in symmetry, dual polyhedra, and computational geometry visualization.

GeoGebra Commands & Parameters

  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 Drawing Prompt Reference

Create a 3D visualization using a spherical reference surface. First construct a sphere and generate discrete points tied to that sphere, then build polyhedral boundaries by combining curved circular arcs with straight segments to form the faces and edges of a rectified truncated icosahedron–type solid. Using polyhedron duality, construct the dual polyhedron on the same spherical coordinate framework, creating its corresponding vertices, edges, and faces. Apply a consistent coloring scheme for edges and faces, showing that the numbering/indexing for the original solid and its dual match under the dual correspondence. Filter the generated edge segments by the same index/order logic so the final render displays both the original polygonal faces and the dual polygonal faces with the curved boundary arcs and straight edges clearly visible.
The prompt above was compiled from the original drawing commands and is for reference only.