Flexicuboctahedron (rollaround)

Flexicuboctahedron (rollaround)
Loading the math board and drawing, please wait…
2020-07-17 00:42
In collections Action Modular Origami
① This example demonstrates a rolling animation of a flexicuboctahedron, a polyhedron folded from paper, showing continuous deformation and motion in space. ② Core mathematical concepts include solid geometry of polyhedra, rotation and translation transformations, and dynamic geometry simulation via parameter control. ③ Construction highlights: using GeoGebra commands such as Point, Intersect, Cube, OrthogonalLine, Sphere, Dilate, Segment, Polygon, Line, Sequence, PolyLine, If, Rotate, Plane, Vector, Translate, Mirror, it builds the cube and its faces, edges, vertices, and uses sliders (ang1s, ang0, clock) and boolean controls (bControl) to drive rotation and rolling for animation. ④ Suitable for high school to university-level mathematics teaching, for exploring polyhedral geometry, spatial transformations, and parametric animation design, as well as an extension case for origami mathematics and dynamic geometry.

GeoGebra Commands & Parameters

  1. Point(xAxis) → B
  2. Intersect(yAxis, xAxis) → A
  3. Point(Circle[B, Distance[A, B], Segment[A, B]]) → C
  4. Cube(A, B, C) → cube1, D, faceCDHG, faceEFGH, edgeAD, edgeAB, edgeBC, edgeCD, edgeAE, edgeDH, edgeEH, edgeEF, E, edgeBF, edgeFG, edgeCG, edgeGH, F, G, H, faceABCD, faceADHE, faceABFE, faceBCGF
  5. OrthogonalLine(CC, xAxis) → p
  6. Sphere(A, radius) → ccc
  7. Dilate(C, dil, OOO) → C'
  8. Cube(A, B, C) → listPoly8_1, listPoly8_2, listPoly8_{11}, listPoly8_{12}, listPoly8_{13}, listPoly8_{14}, listPoly8_{15}, listPoly8_{16}, listPoly8_{17}, listPoly8_{18}, listPoly8_{19}, listPoly8_{20}, listPoly8_3, listPoly8_{21}, listPoly8_{22}, listPoly8_{23}, listPoly8_{24}, listPoly8_4, listPoly8_5, listPoly8_6, listPoly8_7, listPoly8_8, listPoly8_9, listPoly8_{10}
  9. Dilate(D, dil, OOO) → D'
  10. Segment(C', D') → edgeCD'
  11. Intersect(edgeBF, ccc) → P_1, W_1
  12. Intersect(edgeEH, ccc) → O_1, V_1
  13. Intersect(edgeEF, ccc) → N_1, M_1
  14. Polygon(B, P_1, E, A) → poly7, b, n_1, p_1, a_1
  15. Polygon(P_1, O_1, E) → poly8, c_1, d_1, e_1
  16. Line(A, G) → a
  17. Sequence(Rotate[{poly7, poly8}, (n * 120°), a], n, 0, 3) → listPoly0
  18. Line(Q, xAxis) → j
  19. Point(j) → T
  20. Point(j) → B_2
  21. Point(j) → C_2
  22. Intersect(j, yAxis) → S
  23. Line(R, j) → k
  24. Point(k) → U
  25. Point(k) → V
  26. PolyLine(S, T, U, V, B_2, C_2) → l
  27. Intersect(p, l) → CC1
  28. If(bControl ≟ constSingle, ang0, If[bControl ≟ constClock, ang1a, ang1s]) → ang1
  29. Point(k) → Z
  30. Intersect(k, yAxis) → W
  31. Point(k) → Z_1
  32. Point(k) → A_2
  33. Point(j) → B_1
  34. Point(j) → A_1
  35. PolyLine(W, Z, A_1, B_1, Z_1, A_2) → m
  36. Intersect(p, m) → CC2
  37. If(bControl ≟ constSingle, ang0, If[bControl ≟ constClock, ang2a, ang2s]) → ang2
  38. Dilate(H, dil, OOO) → H'
  39. Dilate(E, dil, OOO) → E'
  40. Segment(H', E') → edgeEH'
  41. Dilate(B, dil, OOO) → B'
  42. Dilate(F, dil, OOO) → F'
  43. Segment(F', B') → edgeBF'
  44. Point(j) → E_2
  45. Point(j) → D_2
  46. Point(j) → D_1
  47. Point(k) → C_1
  48. Point(m) → F_2
  49. PolyLine(S, D_1, C_1, F_2, D_2, E_2) → n
  50. Intersect(p, n) → CC3, CC3_1, CC3_2
  51. If(bControl ≟ constSingle, ang0, If[bControl ≟ constClock, ang3a, ang3s]) → ang3
  52. Rotate(Mirror[polyPoints1, listPoly8_{11}], (-ang1), edgeCD) → polyPoints1'
  53. Point(polyPoints1') → K
  54. Plane(B, C, K) → e
  55. Point(polyPoints1') → J
  56. Point(polyPoints1') → F_1
  57. Polygon(J, K, F_1) → poly1, f_1, j_1, k_1
  58. Rotate(Mirror[listPoly0, listPoly8_{11}], (-ang1), edgeCD') → listPoly2
  59. Segment(J, F_1) → q
  60. Point(polyPoints1') → I
  61. Segment(I, J) → f
  62. Rotate(Mirror[polyPoints1', poly1], (-ang2), q) → polyPoints1''
  63. Point(polyPoints1'') → E_1
  64. Rotate(cube1, (-ang1), edgeCD) → cube2
  65. Rotate(Mirror[polyPoints1, faceEFGH], 0*° + ang2, edgeEH) → polyPoints1'_1
  66. Point(polyPoints1'_1) → P
  67. Point(polyPoints1'_1) → O
  68. Rotate(cube1, ang2, edgeEH) → cube6
  69. Point(polyPoints1') → L
  70. Segment(K, L) → g
  71. Point(polyPoints1'') → M
  72. Point(polyPoints1'') → N
  73. Segment(M, N) → h
  74. Rotate(cube2, (-ang2), f) → cube3
  75. Segment(P, O) → i
  76. Rotate(cube3, ang3, h) → cube4
  77. Rotate(cube2, ang3, g) → cube5
  78. Rotate(cube1, ang3, edgeBF) → cube7
  79. Rotate(cube6, (-ang3), i) → cube8
  80. Rotate(Mirror[listPoly2, poly1], (-ang2), q) → listPoly3
  81. Intersect(edgeEF, edgeEH) → Q_1
  82. Point(polyPoints1'') → G_1
  83. Point(polyPoints1'') → H_1
  84. Segment(G_1, H_1) → r
  85. Point(polyPoints1'') → I_1
  86. Polygon(G_1, F_1, I_1) → poly2, i_1, g_1, f_2
  87. Rotate(Mirror[listPoly3, poly2], ang3, r) → listPoly4
  88. Vector(M, F_1) → u
  89. Vector(M, K) → v
  90. Translate(I, u) → I'
  91. Translate(J, u) → J'
  92. Segment(I', J') → f'
  93. Translate(I, u) → I'_1
  94. Translate(F_1, v) → J_1
  95. Translate(I', u) → I''
  96. Translate(I_1, v) → I_1''
  97. Translate(I', v) → I''''
  98. Segment(J_1, I'''') → s
  99. Polygon(C, I'''', J_1) → poly3, j_2, c, i''''
  100. Rotate(Mirror[listPoly0, faceEFGH], 0*° + ang2, edgeEH') → listPoly6
  101. Rotate(Mirror[listPoly0, faceABFE], 0*° - ang3, edgeBF') → listPoly7
  102. Rotate(Mirror[listPoly2, poly3], 180° + ang3, s) → listPoly5
  103. Point(polyPoints1'_1) → K_1
  104. Point(polyPoints1'_1) → L_1
  105. Point(polyPoints1'_1) → R_1
  106. Polygon(K_1, L_1, R_1) → poly4, r_1, k_2, l_1
  107. Point(polyPoints1'_1) → S_1
  108. Point(polyPoints1'_1) → T_1
  109. Point(polyPoints1'_1) → U_1
  110. Polygon(U_1, S_1, T_1) → poly5, t_1, u_1, s_1
  111. Rotate(Mirror[listPoly6, poly5], 180° - ang3, s_1) → listPoly8
  112. Mirror(listPoly9, poly3) → listPoly9'
  113. Mirror(listPoly6, e) → listPoly6'
  114. Mirror(listPoly4, e) → listPoly4'
  115. Mirror(listPoly3, e) → listPoly3'
  116. Translate({listPoly0, listPoly3, listPoly5, listPoly8}, Vector[A, A]) → listSet11
  117. Mirror(listPoly8, e) → listPoly8'
  118. Translate({listPoly3', listPoly8'}, Vector[A, A]) → listTopSet2
  119. Translate({listPoly4', listPoly6'}, Vector[A, A]) → listTopSet1
  120. Translate(Mirror[{listPoly2, listPoly7}, e], Vector[A, A]) → listBottomSet2
  121. Translate(Mirror[{listPoly0, listPoly5}, e], Vector[A, A]) → listBottomSet1
  122. Translate({listPoly2, listPoly4, listPoly6, listPoly7}, Vector[A, A]) → listSet12
  123. Point(j) → H_2
  124. Point(j) → I_2
  125. Point(k) → J_2
  126. Point(k) → K_2
  127. PolyLine(H_2, I_2, J_2, K_2) → t
  128. Intersect(p, t) → CCC4
  129. OrthogonalLine(G_2, xOyPlane) → d
  130. Translate(d, Vector[w / 2]) → d'
  131. Translate(Rotate[{listBottomSet2, listTopSet1}, (y(CCC4) * 180°), d'], w) → listSet21
  132. Translate(Rotate[{listBottomSet1, listTopSet2}, (y(CCC4) * 180°), d'], w) → listSet22
  133. Line(A, B) → h_1
  134. Line(A, I) → m_1
  135. Line(A, P) → q_1
  136. Rotate(B, (-ang1), m_1) → B'_1
  137. Rotate(P, (-ang1), m_1) → P'
  138. Point(m_1) → L_2
  139. Plane(A, B, P) → o
  140. OrthogonalLine(P', q_1, o) → b_1
  141. Intersect(b_1, q_1) → M_2
  142. Vector(P', M_2) → v_1
  143. Vector((abs(x(P') - x(M_2)), 0, 0)) → vabs_1
  144. Translate(Rotate[listPoly0, (-ang1), m_1], v_1) → listPoly01
  145. Translate(Rotate[B, (-ang1), m_1], v_1) → B1
  146. Rotate(B1, ang2, h_1) → B1'
  147. Rotate(listPoly01, ang2, h_1) → listPoly02

AI Drawing Prompt Reference

Draw a rolling flexicuboctahedron, showing its continuous deformation and motion in space as a paper-folded polyhedron. Include a cube with its faces, edges, and vertices, combined with rotation and translation transformations. Use sliders to control the rotation and rolling for animation. Key elements are cubes, spheres, polygons, and lines, demonstrating geometric transformations and dynamic simulation.
The prompt above was compiled from the original drawing commands and is for reference only.