The Spindle Sphere: A 3D Construction with Rotation and Mirroring

The Spindle Sphere: A 3D Construction with Rotation and Mirroring
Loading the math board and drawing, please wait…
2020-12-13 04:42
This GeoGebra example demonstrates a 'spindle sphere', a distinctive 3D surface resembling a spindle or olive shape, constructed by rotating line segments around an axis and applying mirroring and translation operations. The core mathematical concepts include solid geometry, spheres, surfaces of revolution, symmetry transformations (mirroring), translation, and parametric construction, with implicit roles of linear and polynomial functions in defining auxiliary curves or axes. The construction uses commands such as Line, Segment, Point, Sequence, Rotate, OrthogonalPlane, Mirror, Translate, Sphere, If, and Element, along with lists (list1, list2, list3) to manage multiple rotated copies. This example is suitable for high school or early university students learning 3D geometry and transformation-based construction, and serves as an advanced GeoGebra 3D tutorial for combining lists, sequences, and spatial transformations.

GeoGebra Commands & Parameters

  1. Line((0, 0, 1), (0, 1, 1)) → c
  2. Sequence(Rotate[(0, 0, 0), (-((i * 15°))), c], i, 0, 6) → list1
  3. Rotate(list1, (360 / m)°, zAxis) → list1'
  4. Line(Element[list1, 2], Element[list1', 2]) → l1_1
  5. Line((0, 0, 0), l1_1) → l0
  6. Sequence(Polygon[Element[list1, i], Element[list1', i], Element[list1', i + 1], Element[list1, i + 1]], i, 1, 6) → list2
  7. Segment(A, A + (0, 0, 0.5)) → a
  8. Point(a) → P
  9. If(z(P) ≥ 0.5, 0, (2 * (0.5 - z(P)))) → t
  10. Translate(list2, Vector[(s * Vector[(0, 0, 0), (1, 0, 0)])]) → list2'
  11. Translate(l0, Vector[(s * Vector[(0, 0, 0), (1, 0, 0)])]) → l0'
  12. Sequence(Pyramid[Element[list2, i], (0, 0, 1)], i, 1, 6) → list3
  13. Translate(list3, Vector[(s * Vector[(0, 0, 0), (1, 0, 0)])]) → list3'
  14. Line(Element[list1, 3], Element[list1', 3]) → l2
  15. Line(Element[list1, 4], Element[list1', 4]) → l3
  16. Line(Element[list1, 5], Element[list1', 5]) → l4
  17. Line(Element[list1, 6], Element[list1', 6]) → l5
  18. Line(Element[list1, 7], Element[list1', 7]) → l6
  19. Rotate(Element[list3', 1], (t * 7.5°), l0') → d
  20. Translate(l1_1, Vector[(s * Vector[(0, 0, 0), (1, 0, 0)])]) → l1'
  21. Translate(l2, Vector[(s * Vector[(0, 0, 0), (1, 0, 0)])]) → l2'
  22. Translate(l3, Vector[(s * Vector[(0, 0, 0), (1, 0, 0)])]) → l3'
  23. Translate(l4, Vector[(s * Vector[(0, 0, 0), (1, 0, 0)])]) → l4'
  24. Rotate(l1', (7.5° * t), l0') → l1''
  25. Rotate(Rotate[Element[list3', 2], (t * 7.5°), l0'], (t * 15°), l1'') → e
  26. Rotate(Rotate[l2', (t * 7.5°), l0'], (t * 15°), l1'') → l2''
  27. Rotate(Rotate[Rotate[Element[list3', 3], (t * 7.5°), l0'], (t * 15°), l1''], (t * 15°), l2'') → f
  28. Rotate(Rotate[Rotate[l3', (t * 7.5°), l0'], (t * 15°), l1''], (t * 15°), l2'') → l3''
  29. Rotate(Rotate[Rotate[Rotate[Element[list3', 4], (t * 7.5°), l0'], (t * 15°), l1''], (t * 15°), l2''], (15° * t), l3'') → g
  30. Rotate(Rotate[Rotate[Rotate[l4', (t * 7.5°), l0'], (t * 15°), l1''], (t * 15°), l2''], (t * 15°), l3'') → l4''
  31. Rotate(Rotate[Rotate[Rotate[Rotate[Element[list3', 5], (t * 7.5°), l0'], (t * 15°), l1''], (t * 15°), l2''], (15° * t), l3''], (15° * t), l4'') → h
  32. Translate(l5, Vector[(s * Vector[(0, 0, 0), (1, 0, 0)])]) → l5'
  33. Rotate(Rotate[Rotate[Rotate[Rotate[l5', (t * 7.5°), l0'], (t * 15°), l1''], (t * 15°), l2''], (t * 15°), l3''], (15° * t), l4'') → l5''
  34. Rotate(Element[list2', 1], (t * 7.5°), l0') → poly1
  35. Rotate(Rotate[Rotate[Rotate[Rotate[Rotate[Element[list3', 6], (t * 7.5°), l0'], (t * 15°), l1''], (t * 15°), l2''], (15° * t), l3''], (15° * t), l4''], (15° * t), l5'') → i
  36. Rotate(Rotate[Element[list2', 2], (t * 7.5°), l0'], (t * 15°), l1'') → poly2
  37. Rotate(Rotate[Rotate[Element[list2', 3], (t * 7.5°), l0'], (t * 15°), l1''], (t * 15°), l2'') → poly3
  38. Rotate(Rotate[Rotate[Rotate[Element[list2', 4], (t * 7.5°), l0'], (t * 15°), l1''], (t * 15°), l2''], (15° * t), l3'') → poly4
  39. Rotate(Rotate[Rotate[Rotate[Rotate[Element[list2', 5], (t * 7.5°), l0'], (t * 15°), l1''], (t * 15°), l2''], (15° * t), l3''], (15° * t), l4'') → poly5
  40. Rotate(Rotate[Rotate[Rotate[Rotate[Rotate[Element[list2', 6], (t * 7.5°), l0'], (t * 15°), l1''], (t * 15°), l2''], (15° * t), l3''], (15° * t), l4''], (15° * t), l5'') → poly6
  41. OrthogonalPlane((0, 0, 1), zAxis) → m_1
  42. Translate(l6, Vector[(s * Vector[(0, 0, 0), (1, 0, 0)])]) → l6'
  43. Rotate(Rotate[Rotate[Rotate[Rotate[Rotate[l6', (t * 7.5°), l0'], (t * 15°), l1''], (t * 15°), l2''], (t * 15°), l3''], (15° * t), l4''], (15° * t), l5'') → l6''
  44. Rotate(Rotate[Rotate[Rotate[Rotate[Rotate[Rotate[m_1, (t * 7.5°), l0'], (t * 15°), l1''], (t * 15°), l2''], (15° * t), l3''], (15° * t), l4''], (15° * t), l5''], (7.5° * t), l6'') → n
  45. Mirror(i, n) → i'
  46. Mirror(h, n) → h'
  47. Mirror(g, n) → g'
  48. Mirror(f, n) → f'
  49. Mirror(e, n) → e'
  50. Mirror(d, n) → d'
  51. Mirror(poly6, n) → poly6'
  52. Mirror(poly5, n) → poly5'
  53. Mirror(poly4, n) → poly4'
  54. Mirror(poly3, n) → poly3'
  55. Mirror(poly2, n) → poly2'
  56. Mirror(poly1, n) → poly1'
  57. Sequence(Rotate[list3, 15° + ((15° * 22) * i), zAxis], i, 0, 1) → list4
  58. Mirror(list4, m_1) → list4'
  59. Sequence(Rotate[list2, (15° * i), zAxis], i, 1, 23) → list5
  60. Mirror(list5, m_1) → list5'
  61. Sequence(Rotate[l1, i, zAxis], i, 0, (2 * π), (2 * π / p)) → l7
  62. Sphere((0, 0, 1), 0.982) → b
  63. Element(l7, A1) → B1
  64. Element(l7, A2) → B2
  65. Element(l7, A3) → B3
  66. Element(l7, A4) → B4
  67. Element(l7, A5) → B5
  68. Element(l7, A6) → B6
  69. Element(l7, A7) → B7
  70. Element(l7, A8) → B8
  71. Element(l7, A9) → B9
  72. Element(l7, A10) → B10
  73. Element(l7, A11) → B11
  74. Element(l7, A12) → B12
  75. Element(l7, A13) → B13
  76. Element(l7, A14) → B14
  77. Element(l7, A15) → B15
  78. Element(l7, A16) → B16
  79. Element(l7, A17) → B17
  80. Element(l7, A18) → B18
  81. Element(l7, A19) → B19
  82. Element(l7, A20) → B20
  83. Element(l7, A21) → B21
  84. Element(l7, A22) → B22
  85. Element(l7, A23) → B23
  86. Element(l7, A24) → B24
  87. Element(l7, A25) → B25
  88. Element(l7, A26) → B26
  89. Element(l7, A27) → B27
  90. Element(l7, A28) → B28
  91. Element(l7, A29) → B29
  92. Element(l7, A30) → B30
  93. Element(l7, A31) → B31
  94. Element(l7, A32) → B32
  95. Element(l7, A33) → B33
  96. Element(l7, A34) → B34
  97. Element(l7, A35) → B35
  98. Element(l7, A36) → B36
  99. Element(l7, A37) → B37
  100. Element(l7, A38) → B38
  101. Element(l7, A39) → B39
  102. Element(l7, A40) → B40
  103. Element(l7, A41) → B41
  104. Element(l7, A42) → B42
  105. Element(l7, A43) → B43
  106. Element(l7, A44) → B44
  107. Element(l7, A45) → B45
  108. Element(l7, A46) → B46
  109. Element(l7, A47) → B47
  110. Element(l7, A48) → B48
  111. Element(l7, A49) → B49
  112. Element(l7, A50) → B50
  113. Element(l7, A51) → B51
  114. Element(l7, A52) → B52
  115. Element(l7, A53) → B53
  116. Element(l7, A54) → B54
  117. Element(l7, A55) → B55
  118. Element(l7, A56) → B56
  119. Element(l7, A57) → B57

AI Drawing Prompt Reference

Create a 3D spindle-sphere (olive-like) surface. Start with a short line segment in space near the rotation axis: one end lies at height z=1 on a line parallel to y, and the segment extends upward by about 0.5 along z. Rotate this segment around the z-axis by equal angle steps to form a ring of rotated line copies, then connect corresponding neighboring copies to build polygonal surface patches, forming a shell. Construct additional pyramid-like side faces from the connected rings to give the solid’s characteristic outline. Apply a parameter-controlled translation along the x direction to shift the layered shell, and then rotate the translated layers around the bottom reference line with stepwise angle increments derived from the same parameters. Finally, mirror the resulting structure across an orthogonal plane defined through the z-axis to complete a symmetric spindle shape.
The prompt above was compiled from the original drawing commands and is for reference only.