Canonical Truncated Snub Cube (laevo) and Its Dual: Edge/Face Coloring

Canonical Truncated Snub Cube (laevo) and Its Dual: Edge/Face Coloring
Loading the math board and drawing, please wait…
2021-03-16 00:01
This example visualizes the canonical truncated snub cube (laevo) together with its dual polyhedron, focusing on how edges and faces can be colored to reveal the combinatorial correspondences implied by duality. It highlights key ideas from solid geometry: vertex–edge–face structure of polyhedra, the notion of a dual polyhedron, and geometry-driven classification for consistent styling. The construction uses GeoGebra commands and workflow reflected in the model: Sequence to generate index/parameter lists; If for conditional logic; Sort, First, and KeepIf to select and filter elements; Sphere and Circle to set spherical/circular reference geometry; PointIn to test membership of points in regions; Angle and Segment to measure angles and form edges. Textfield, TableText, UnicodeToLetter, and Text objects are used for labeling and displaying structured information. Additional computed quantities such as Vol, Vold, Vol_{sphere}, Vol_r, and Vold_r support interpreting geometric measures within the visualization. Suitable for advanced high school through early university, especially for teaching/learning polyhedral duality and geometry visualization with GeoGebra.

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

Create a single visualization of the canonical truncated snub cube (laevo) together with its dual polyhedron, emphasizing the combinatorial correspondence implied by duality via edge/face coloring. Start by setting spherical or circular reference geometry using user-provided radius inputs, then generate the polyhedron’s vertices, edges, and polygonal faces. Use indexed parameter lists to select and sort segments and faces, and apply numeric rounding/threshold conditions to keep only the relevant faces and edge segments. Build face polygons from the selected vertex sequences and create the highlighted edge sets from the filtered segments. Display a structured color key using styled text so that orange denotes n and blue denotes n/dual, and add table-like labels for indices and their dual counterparts. Include angle and segment measurements to support the shown geometric relationships.
The prompt above was compiled from the original drawing commands and is for reference only.