Flexicuboctahedron (rollaround)
Loading the math board and drawing, please wait…
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
Point(xAxis) → BIntersect(yAxis, xAxis) → APoint(Circle[B, Distance[A, B], Segment[A, B]]) → CCube(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, faceBCGFOrthogonalLine(CC, xAxis) → pSphere(A, radius) → cccDilate(C, dil, OOO) → C'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}Dilate(D, dil, OOO) → D'Segment(C', D') → edgeCD'Intersect(edgeBF, ccc) → P_1, W_1Intersect(edgeEH, ccc) → O_1, V_1Intersect(edgeEF, ccc) → N_1, M_1Polygon(B, P_1, E, A) → poly7, b, n_1, p_1, a_1Polygon(P_1, O_1, E) → poly8, c_1, d_1, e_1Line(A, G) → aSequence(Rotate[{poly7, poly8}, (n * 120°), a], n, 0, 3) → listPoly0Line(Q, xAxis) → jPoint(j) → TPoint(j) → B_2Point(j) → C_2Intersect(j, yAxis) → SLine(R, j) → kPoint(k) → UPoint(k) → VPolyLine(S, T, U, V, B_2, C_2) → lIntersect(p, l) → CC1If(bControl ≟ constSingle, ang0, If[bControl ≟ constClock, ang1a, ang1s]) → ang1Point(k) → ZIntersect(k, yAxis) → WPoint(k) → Z_1Point(k) → A_2Point(j) → B_1Point(j) → A_1PolyLine(W, Z, A_1, B_1, Z_1, A_2) → mIntersect(p, m) → CC2If(bControl ≟ constSingle, ang0, If[bControl ≟ constClock, ang2a, ang2s]) → ang2Dilate(H, dil, OOO) → H'Dilate(E, dil, OOO) → E'Segment(H', E') → edgeEH'Dilate(B, dil, OOO) → B'Dilate(F, dil, OOO) → F'Segment(F', B') → edgeBF'Point(j) → E_2Point(j) → D_2Point(j) → D_1Point(k) → C_1Point(m) → F_2PolyLine(S, D_1, C_1, F_2, D_2, E_2) → nIntersect(p, n) → CC3, CC3_1, CC3_2If(bControl ≟ constSingle, ang0, If[bControl ≟ constClock, ang3a, ang3s]) → ang3Rotate(Mirror[polyPoints1, listPoly8_{11}], (-ang1), edgeCD) → polyPoints1'Point(polyPoints1') → KPlane(B, C, K) → ePoint(polyPoints1') → JPoint(polyPoints1') → F_1Polygon(J, K, F_1) → poly1, f_1, j_1, k_1Rotate(Mirror[listPoly0, listPoly8_{11}], (-ang1), edgeCD') → listPoly2Segment(J, F_1) → qPoint(polyPoints1') → ISegment(I, J) → fRotate(Mirror[polyPoints1', poly1], (-ang2), q) → polyPoints1''Point(polyPoints1'') → E_1Rotate(cube1, (-ang1), edgeCD) → cube2Rotate(Mirror[polyPoints1, faceEFGH], 0*° + ang2, edgeEH) → polyPoints1'_1Point(polyPoints1'_1) → PPoint(polyPoints1'_1) → ORotate(cube1, ang2, edgeEH) → cube6Point(polyPoints1') → LSegment(K, L) → gPoint(polyPoints1'') → MPoint(polyPoints1'') → NSegment(M, N) → hRotate(cube2, (-ang2), f) → cube3Segment(P, O) → iRotate(cube3, ang3, h) → cube4Rotate(cube2, ang3, g) → cube5Rotate(cube1, ang3, edgeBF) → cube7Rotate(cube6, (-ang3), i) → cube8Rotate(Mirror[listPoly2, poly1], (-ang2), q) → listPoly3Intersect(edgeEF, edgeEH) → Q_1Point(polyPoints1'') → G_1Point(polyPoints1'') → H_1Segment(G_1, H_1) → rPoint(polyPoints1'') → I_1Polygon(G_1, F_1, I_1) → poly2, i_1, g_1, f_2Rotate(Mirror[listPoly3, poly2], ang3, r) → listPoly4Vector(M, F_1) → uVector(M, K) → vTranslate(I, u) → I'Translate(J, u) → J'Segment(I', J') → f'Translate(I, u) → I'_1Translate(F_1, v) → J_1Translate(I', u) → I''Translate(I_1, v) → I_1''Translate(I', v) → I''''Segment(J_1, I'''') → sPolygon(C, I'''', J_1) → poly3, j_2, c, i''''Rotate(Mirror[listPoly0, faceEFGH], 0*° + ang2, edgeEH') → listPoly6Rotate(Mirror[listPoly0, faceABFE], 0*° - ang3, edgeBF') → listPoly7Rotate(Mirror[listPoly2, poly3], 180° + ang3, s) → listPoly5Point(polyPoints1'_1) → K_1Point(polyPoints1'_1) → L_1Point(polyPoints1'_1) → R_1Polygon(K_1, L_1, R_1) → poly4, r_1, k_2, l_1Point(polyPoints1'_1) → S_1Point(polyPoints1'_1) → T_1Point(polyPoints1'_1) → U_1Polygon(U_1, S_1, T_1) → poly5, t_1, u_1, s_1Rotate(Mirror[listPoly6, poly5], 180° - ang3, s_1) → listPoly8Mirror(listPoly9, poly3) → listPoly9'Mirror(listPoly6, e) → listPoly6'Mirror(listPoly4, e) → listPoly4'Mirror(listPoly3, e) → listPoly3'Translate({listPoly0, listPoly3, listPoly5, listPoly8}, Vector[A, A]) → listSet11Mirror(listPoly8, e) → listPoly8'Translate({listPoly3', listPoly8'}, Vector[A, A]) → listTopSet2Translate({listPoly4', listPoly6'}, Vector[A, A]) → listTopSet1Translate(Mirror[{listPoly2, listPoly7}, e], Vector[A, A]) → listBottomSet2Translate(Mirror[{listPoly0, listPoly5}, e], Vector[A, A]) → listBottomSet1Translate({listPoly2, listPoly4, listPoly6, listPoly7}, Vector[A, A]) → listSet12Point(j) → H_2Point(j) → I_2Point(k) → J_2Point(k) → K_2PolyLine(H_2, I_2, J_2, K_2) → tIntersect(p, t) → CCC4OrthogonalLine(G_2, xOyPlane) → dTranslate(d, Vector[w / 2]) → d'Translate(Rotate[{listBottomSet2, listTopSet1}, (y(CCC4) * 180°), d'], w) → listSet21Translate(Rotate[{listBottomSet1, listTopSet2}, (y(CCC4) * 180°), d'], w) → listSet22Line(A, B) → h_1Line(A, I) → m_1Line(A, P) → q_1Rotate(B, (-ang1), m_1) → B'_1Rotate(P, (-ang1), m_1) → P'Point(m_1) → L_2Plane(A, B, P) → oOrthogonalLine(P', q_1, o) → b_1Intersect(b_1, q_1) → M_2Vector(P', M_2) → v_1Vector((abs(x(P') - x(M_2)), 0, 0)) → vabs_1Translate(Rotate[listPoly0, (-ang1), m_1], v_1) → listPoly01Translate(Rotate[B, (-ang1), m_1], v_1) → B1Rotate(B1, ang2, h_1) → B1'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.