Edge/Face Coloring of a Rectified Truncated Icosahedron and Its Dual
Loading the math board and drawing, please wait…
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
Sequence(((zoom * Element[Element[A00d, i], 1]), (zoom * Element[Element[A00d, i], 2]), (zoom * Element[Element[A00d, i], 3])), i, 1, Length[A00d]) → A0dSequence(((zoom * Element[Element[A00, i], 1]), (zoom * Element[Element[A00, i], 2]), (zoom * Element[Element[A00, i], 3])), i, 1, Length[A00]) → A0Sphere(O, r_o) → sp02dTextfield(R1sphere) → InputBox5Sphere(O, R1sphere) → sp01Textfield(r_o) → InputBox6Textfield(jarc) → InputBox8Textfield(jarc_d) → InputBox9Textfield(f_{Poly}) → InputBox11Textfield(k) → InputBox15Textfield(k_d) → InputBox14TableText({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") → text24Textfield(iseg) → InputBox17Textfield(f_{Poly}d) → InputBox18Textfield(isegd) → InputBox19UnicodeToLetter(34) → u34TableText({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") → text23Textfield(n_3) → InputBox20If(n_3 ≟ 0, "", Text["" + n_3]) → txt_3Textfield(nd_3) → InputBox21If(nd_3 ≟ 0, "", Text["" + nd_3]) → txtd_3Circle(A_{farbe}, rfabe) → farbekreisPointIn(farbekreis) → AAngle(A) → αSegment(C, D) → hSort(Sequence[Segment[Element[A0, Element[Element[nom, i], 1]], Element[A0, Element[Element[nom, i], 2]]], i, 1, Length[nom]]) → SegmentsFirst(Segments, i_s) → Segments_oSort(Sequence[Segment[Element[A0d, Element[Element[nomd, i], 1]], Element[A0d, Element[Element[nomd, i], 2]]], i, 1, Length[nomd]]) → SegmentsdFirst(Segmentsd, id_s) → Segmentsd_oKeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segn, 1], Segments) → la1KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segn, 2], Segments) → la2KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segn, 3], Segments) → la3KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segn, 4], Segments) → la4Sequence(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}KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[poly_{3}S, 1], poly_{3}) → poly_{3}1KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[poly_{3}S, 2], poly_{3}) → poly_{3}2KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[poly_{3}S, 3], poly_{3}) → poly_{3}3Sequence(Polygon[Sequence[A0(mm6(1, f, k)), k, 1, Length[mm6(1, 1)]]], f, 1, Length[mm6(1)]) → poly_{5}KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segnd, 1], Segmentsd) → lad1KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segnd, 2], Segmentsd) → lad2KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segnd, 3], Segmentsd) → lad3KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segnd, 4], Segmentsd) → lad4KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segnd, 5], Segmentsd) → lad5KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segnd, 6], Segmentsd) → lad6KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[Segnd, 7], Segmentsd) → lad7Sequence(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}KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[poly_{3}Sd, 1], polyd_{3}) → polyd_{3}1KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[poly_{3}Sd, 2], polyd_{3}) → polyd_{3}2KeepIf(round((x * 10^(k))) / 10^(k) ≟ Element[poly_{3}Sd, 3], polyd_{3}) → polyd_{3}3Sequence(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.