Sierpinski Carpet Pyramid: An Iterative 3D Fractal Construction

Sierpinski Carpet Pyramid: An Iterative 3D Fractal Construction
Loading the math board and drawing, please wait…
2021-03-14 04:40
This example demonstrates how to construct a Sierpinski-carpet–style 3D fractal pyramid (a layered pyramid-like solid) using iterative geometric rules. It highlights key ideas from fractal geometry and recursive/iterative construction, together with 3D solid-geometry modeling of faces and edges. Construction workflow in GeoGebra: start with Polygon and Pyramid to define the base geometry; create crucial vertices using Point; compute edge midpoints via Midpoint to generate the next-level substructures; use Plane, OrthogonalPlane, and OrthogonalLine to set up planes and right-angled relationships in space; apply Rotate and Translate to position and orient repeated parts; and use Vector and Intersect to manage directional information and compute necessary intersection points. The model then assembles individual side faces (e.g., faceABF, faceBCF, …) and corresponding edges (e.g., arestaAF, arestaBF, …) to form the final stepped fractal pyramid shape. Suitable for advanced secondary students and undergraduate learners to visualize iteration-driven fractals and practical 3D geometric construction.

GeoGebra Commands & Parameters

  1. Polygon(A, B, 4, xOyPlane) → pol1, f, g, h, i, C, D
  2. Pyramid(pol1, 4) → b, F, faceABF, faceBCF, faceCDF, faceADF, arestaAF, arestaBF, arestaCF, arestaDF
  3. Point(Segment[A, B], 1 / 3) → E
  4. OrthogonalLine(E, f, faceABF) → l
  5. Point(Segment[A, E], 1 / 3) → J
  6. Point(Segment[A, E], 2 / 3) → K
  7. OrthogonalLine(J, f, faceABF) → j
  8. OrthogonalLine(K, f, faceABF) → k
  9. Intersect(k, arestaAF) → N
  10. Intersect(arestaAF, j) → O
  11. Midpoint(O, N) → B_0
  12. Plane(B_0, xOyPlane) → p
  13. OrthogonalLine(O, p) → n
  14. OrthogonalLine(N, p) → q
  15. OrthogonalLine(N, p) → r
  16. Intersect(n, p) → B_4
  17. Rotate(B_4, 90°, B_0, p) → B_3
  18. Polygon(B_4, B_3, 4, p) → pol2, s, t, a, c, B_2, B_1
  19. Rotate(pol2, 90°, zAxis) → pol2'
  20. Rotate(pol2', 90°, zAxis) → pol2''
  21. Rotate(pol2'', 90°, zAxis) → pol2'''
  22. Midpoint(A, O) → C_0
  23. OrthogonalPlane(C_0, zAxis) → q_1
  24. OrthogonalLine(C_0, n, space) → m
  25. OrthogonalLine(C_0, m, q_1) → d
  26. Polygon(C_4, C_3, C_2, C_1) → q1, g_1, m_1, i_1, l_1
  27. OrthogonalLine(B_0, q_1) → e
  28. Vector(C_0, C_0 + (Distance[B_1, B_2], 0)) → ch
  29. Point(Segment[F, A], 1 / 3) → A_4
  30. Point(Segment[F, B], 1 / 3) → A_3
  31. Plane(A_4, q_1) → r_1
  32. Polygon(A_4, A_3, 4, r_1) → poly1, f_1, h_1, j_1, k_1, A_2, A_1
  33. Vector(B_0, B_0 + (Distance[A_1, A_2], 0)) → bh
  34. Vector(B_0, B_0 + (0, Distance[A_1, A_2])) → bv
  35. Vector(C_0, C_0 + (0, Distance[B_1, B_2])) → cv
  36. Translate(pol2, bv) → pol2'_{1}
  37. Translate(pol2''', bh) → q2
  38. Translate(pol2', bv) → pol2''_{1}
  39. Translate(q_1, Vector[(0, 0, 0)]) → p_1
  40. Translate(pol2, bh) → pol2'_{2}
  41. Translate(p_1, Vector[(0, 0, 0)]) → p_2
  42. Translate(q1, cv) → q1'
  43. Translate(q1', cv) → q1''
  44. Translate(pol1, u) → pol1'
  45. Translate(q1'', ch) → q1'''
  46. Translate(q1, ch) → q1'_{1}
  47. Translate(q1'_{1}, ch) → q3
  48. Translate(q3, cv) → q3'
  49. Translate(q3', cv) → q3''
  50. Translate(q1'', bv) → q1'''_{1}
  51. Translate(q1''', bv) → q4
  52. Translate(q3'', bv) → q3'''
  53. Translate(q1', bv) → q1''_{1}
  54. Translate(q1, bv) → q1'_{2}
  55. Translate(q1'_{1}, bv) → q5
  56. Translate(q3, bv) → q3'_{1}
  57. Translate(q3', bv) → q3''_{1}
  58. Translate(q3, bh) → q3'_{2}
  59. Translate(q3', bh) → q3''_{2}
  60. Translate(q3'', bh) → q3'''_{1}
  61. Translate(q1''', bh) → q6
  62. Translate(q1'', bh) → q1'''_{2}
  63. Translate(q1', bh) → q1''_{2}
  64. Translate(q1, bh) → q1'_{3}
  65. Translate(q1'_{1}, bh) → q7
  66. Translate(xOyPlane, Vector[(0, 0, 0)]) → xOyPlane'
  67. Translate(q1'''_{1}, bv) → q8
  68. Translate(q1''_{1}, bv) → q9
  69. Translate(q1'_{2}, bv) → q10
  70. Translate(q5, bv) → q5'
  71. Translate(q3'_{1}, bv) → q11
  72. Translate(q3''_{1}, bv) → q12
  73. Translate(q3''', bv) → q13
  74. Translate(q4, bv) → q4'
  75. Translate(q13, bh) → q13'
  76. Translate(q4', bh) → q4''
  77. Translate(q8, bh) → q8'
  78. Translate(q9, bh) → q9'
  79. Translate(q10, bh) → q10'
  80. Translate(q5', bh) → q5''
  81. Translate(q11, bh) → q11'
  82. Translate(q12, bh) → q12'
  83. Translate(q1'''_{2}, bh) → q14
  84. Translate(q6, bh) → q6'
  85. Translate(q3'''_{1}, bh) → q15
  86. Translate(q1''_{2}, bh) → q16
  87. Translate(q1'_{3}, bh) → q17
  88. Translate(q7, bh) → q7'
  89. Translate(q3'_{2}, bh) → q18
  90. Translate(q3''_{2}, bh) → q19
  91. Translate(q14, bv) → q14'
  92. Translate(q16, v) → q16'
  93. Translate(q16', bv) → q16''
  94. Translate(q17, bv) → q17'
  95. Translate(q7', bv) → q7''
  96. Translate(q19, bv) → q19'
  97. Translate(q15, bv) → q15'
  98. Translate(q6', bv) → q6''
  99. Translate(q18, bv) → q18'
  100. Translate(q13', bh) → q13''
  101. Translate(q4'', bh) → q4'''
  102. Translate(q8', bh) → q8''
  103. Translate(q9', bh) → q9''
  104. Translate(q10', bh) → q10''
  105. Translate(q5'', bh) → q5'''
  106. Translate(q11', bh) → q11''
  107. Translate(q12', bh) → q12''

AI Drawing Prompt Reference

Draw a 3D fractal pyramid inspired by the Sierpinski carpet. Start with a square base and a four-sided pyramid. Mark points at one-third along a base edge and draw perpendicular lines to intersect the pyramid's side edges. Construct a square plane parallel to the base between the base and apex, then rotate it three times around the vertical axis to create a stepped layer. Add smaller squares on the side faces and translate copies across the pyramid to form a repeating, nested pattern of shrinking squares, resulting in a layered fractal solid with visible faces and edges.
The prompt above was compiled from the original drawing commands and is for reference only.