Muqarnas Units

Muqarnas Units
Loading the math board and drawing, please wait…
2020-06-21 21:09
This example demonstrates the geometric construction of muqarnas units. It involves key mathematical concepts such as vectors, geometric construction, and transformations. Using commands like Rotate, Intersect, Segment, Polygon, and Dilate in GeoGebra, complex muqarnas units can be constructed. Suitable for high school mathematics education and learning.

GeoGebra Commands & Parameters

  1. Rotate(A + (1 / sin(67.5°) * (B - A)), 22.5°, A) → BARB
  2. Rotate(B, 135°, A) → BBA
  3. Rotate(B, 45°, A) → ABR
  4. Rotate(B, 45°, A) → ABSM
  5. Rotate(A + (sin(45°) / sin(112.5°) * (B - A)), 22.5°, A) → ABT
  6. Rotate(A, (-(90°)), B) → AB
  7. Rotate(B, (-(135°)), A) → ABA
  8. Rotate(A + (sin(45°) / sin(22.5°) * (B - A)), 112.5°, A) → ABAB
  9. Intersect(Line[A, Rotate[B, 45°, A]], Line[B, Rotate[A, (-(45°)), B]]) → ABH
  10. Intersect(Line[A, Rotate[B, 67.5°, A]], Line[B, Rotate[A, (-(67.5°)), B]]) → ABHR
  11. Rotate(B, 90°, A) → BA
  12. Rotate(B, 135°, A) → BAR
  13. Intersect(OrthogonalLine[B, Line[A, B]], OrthogonalLine[BBA, Line[BBA, A]]) → BBAB
  14. Segment(A, ABT) → t9pijl1
  15. Segment(A, B) → t9pijl2
  16. Segment(A, ABR) → t9pijl3
  17. Segment(A, BBAB) → t3pijl1
  18. Segment(B, BBAB) → t3pijl2
  19. Segment(BBA, BBAB) → t3pijl3
  20. Segment(BBA, A) → t3vet1
  21. Segment(A, B) → t3vet2
  22. Intersect(Line[C, Rotate[DB, 45°, Line[C, C + (0, 0, 1)]]], Line[E, Rotate[DB, (-(45°)), Line[E, E + (0, 0, 1)]]]) → CESB
  23. Intersect(Line[C, Rotate[DB, 22.5°, Line[C, C + (0, 0, 1)]]], Line[E, Rotate[DB, (-(22.5°)), Line[E, E + (0, 0, 1)]]]) → CELB
  24. Intersect(Line[C, Rotate[DB, 90°, Line[C, C + (0, 0, 1)]]], Line[E, Rotate[DB, (-(90°)), Line[E, E + (0, 0, 1)]]]) → CEA
  25. Polygon(A, B, ABT, ABR) → SmBiped9, smb92, smb91, smb94, smb93
  26. Dilate(A, 0.75, Centroid[SmBiped9]) → A'
  27. Dilate(B, 0.75, Centroid[SmBiped9]) → B'
  28. Dilate(ABT, 0.75, Centroid[SmBiped9]) → ABT'
  29. Dilate(ABR, 0.75, Centroid[SmBiped9]) → ABR'
  30. Polygon(A, B, BARB, BBA) → Almond3, alm31, alm32, alm33, alm34
  31. Polygon(A', B', ABT', ABR') → SmBiped9', a', b', abt', abr'
  32. Dilate(A, 0.75, Centroid[Almond3]) → A'_1
  33. Dilate(B, 0.75, Centroid[Almond3]) → B'_1
  34. Dilate(BBAB, 0.75, Centroid[Almond3]) → BBAB'
  35. Dilate(BBA, 0.75, Centroid[Almond3]) → BBA'
  36. Polygon(A'_1, B'_1, BBAB', BBA') → Almond3', a'_1, b'_1, bbab', bba'
  37. Polygon(D, E, EE, DD) → achter1, d, e, ee, dd
  38. Polygon(C, CC, DD, D) → achter2, c, cc, f, d_1
  39. Polygon(EE, ECA, DD) → EAlmond3boven1, g, i, eca
  40. Polygon(CC, ECA, DD) → EAlmond3boven2, j, k, l
  41. Rotate(A + (sin(22.5°) / sin(112.5°) * (B - A)), 45°, A) → ABL
  42. Polygon(A, B, AB, BA) → Square1, sq11, sq13, sq12, sq14
  43. Dilate(A, 0.75, Centroid[Square1]) → A'_2
  44. Dilate(B, 0.75, Centroid[Square1]) → B'_2
  45. Dilate(AB, 0.75, Centroid[Square1]) → AB'
  46. Dilate(BA, 0.75, Centroid[Square1]) → BA'
  47. Polygon(A'_2, B'_2, AB', BA') → Square1', a'_2, b'_2, ab', ba'
  48. Rotate(A, (-(45°)), B) → ABRH
  49. Polygon(A, B, ABRH, BAR) → Rhombus2, rh21, rh23, rh22, rh24
  50. Dilate(A, 0.75, Centroid[Rhombus2]) → A'_3
  51. Dilate(B, 0.75, Centroid[Rhombus2]) → B'_3
  52. Dilate(ABRH, 0.75, Centroid[Rhombus2]) → ABRH'
  53. Dilate(BAR, 0.75, Centroid[Rhombus2]) → BAR'
  54. Polygon(A'_3, B'_3, ABRH', BAR') → Rhombus2', a'_3, b'_3, abrh', bar'
  55. Rotate(A + (sin(67.5°) / sin(45°) * (B - A)), 67.5°, A) → BAJ
  56. Polygon(A, B, BAJ, BBA) → Jug4, jug41, jug42, jug43, jug44
  57. Dilate(A, 0.75, Centroid[Jug4]) → A'_4
  58. Dilate(B, 0.75, Centroid[Jug4]) → B'_4
  59. Dilate(BAJ, 0.75, Centroid[Jug4]) → BAJ'
  60. Dilate(BBA, 0.75, Centroid[Jug4]) → BBA'_1
  61. Polygon(A'_4, B'_4, BAJ', BBA'_1) → Jug4', a'_4, b'_4, baj', bba'_1
  62. Polygon(A, B, ABH) → HSquare5, hsq52, hsq51, hsq53
  63. Dilate(A, 0.75, Centroid[HSquare5]) → A'_5
  64. Dilate(B, 0.75, Centroid[HSquare5]) → B'_5
  65. Dilate(ABH, 0.75, Centroid[HSquare5]) → ABH'
  66. Polygon(A'_5, B'_5, ABH') → HSquare5', abh', a'_5, b'_5
  67. Polygon(A, B, ABHR) → HRhombus6, hrh62, hrh61, hrh63
  68. Dilate(A, 0.75, Centroid[HRhombus6]) → A'_6
  69. Dilate(B, 0.75, Centroid[HRhombus6]) → B'_6
  70. Dilate(ABHR, 0.75, Centroid[HRhombus6]) → ABHR'
  71. Polygon(A'_6, B'_6, ABHR') → HRhombus6', abhr', a'_6, b'_6
  72. Polygon(A, B, ABL, BA) → LBiped10, lb101, lb103, lb102, lb104
  73. Dilate(A, 0.75, Centroid[LBiped10]) → A'_7
  74. Dilate(B, 0.75, Centroid[LBiped10]) → B'_7
  75. Dilate(ABL, 0.75, Centroid[LBiped10]) → ABL'
  76. Dilate(BA, 0.75, Centroid[LBiped10]) → BA'_1
  77. Polygon(A'_7, B'_7, ABL', BA'_1) → LBiped10', a'_7, b'_7, abl', ba'_1
  78. Polygon(A, B, BA) → HSquare11, hsq113, hsq111, hsq112
  79. Dilate(A, 0.75, Centroid[HSquare11]) → A'_8
  80. Dilate(B, 0.75, Centroid[HSquare11]) → B'_8
  81. Dilate(BA, 0.75, Centroid[HSquare11]) → BA'_2
  82. Polygon(A'_8, B'_8, BA'_2) → HSquare11', ba'_2, a'_8, b'_8
  83. Polygon(A, B, ABR) → HRhombus12, hrh121, hrh123, hrh122
  84. Dilate(A, 0.75, Centroid[HRhombus12]) → A'_9
  85. Dilate(B, 0.75, Centroid[HRhombus12]) → B'_9
  86. Dilate(ABR, 0.75, Centroid[HRhombus12]) → ABR'_1
  87. Polygon(A'_9, B'_9, ABR'_1) → HRhombus12', abr'_1, a'_9, b'_9
  88. Polygon(ABA, A, B, ABAB) → SmBiped13, smb132, smb131, smb134, smb133
  89. Dilate(ABA, 0.75, Centroid[SmBiped13]) → ABA'
  90. Dilate(A, 0.75, Centroid[SmBiped13]) → A'_{10}
  91. Dilate(B, 0.75, Centroid[SmBiped13]) → B'_{10}
  92. Dilate(ABAB, 0.75, Centroid[SmBiped13]) → ABAB'
  93. Polygon(ABA', A'_{10}, B'_{10}, ABAB') → SmBiped13', aba', a'_{10}, b'_{10}, abab'
  94. Polygon(A, B, BARB, ABR) → Almond14, m, n, p, q
  95. Dilate(A, 0.75, Centroid[Almond14]) → A'_{11}
  96. Dilate(B, 0.75, Centroid[Almond14]) → B'_{11}
  97. Dilate(BARB, 0.75, Centroid[Almond14]) → BARB'
  98. Dilate(BAR, 0.75, Centroid[Almond14]) → BAR'_1
  99. Segment(A, AB) → sq1pijl1
  100. Segment(B, AB) → sq1pijl2
  101. Segment(A, B) → sqvet1
  102. Segment(A, BA) → sqvet2
  103. Segment(BA, AB) → sq1pijl3
  104. Segment(A, B) → sq7pijl3
  105. Segment(A, BA) → sq7pijl2
  106. Segment(A, ABRH) → rh2pijl1
  107. Segment(B, ABRH) → rh2pijl2
  108. Segment(BAR, ABRH) → rh2pijl3
  109. Segment(A, B) → rh2vet1
  110. Segment(A, BAR) → rh2vet2
  111. Segment(A, B) → rh8pijl2
  112. Segment(A, BAR) → rh8pijl3
  113. Segment(A, BARB) → alm3pijl1
  114. Segment(B, BARB) → alm3pijl2
  115. Segment(BBA, BARB) → alm3pijl3
  116. Segment(A, B) → alm3vet1
  117. Segment(A, BBA) → alm3vet2
  118. Segment(A, BAJ) → jug4pijl1
  119. Segment(B, BAJ) → jug4pijl2
  120. Segment(BBA, BAJ) → jug4pijl3
  121. Segment(A, B) → jug4vet1
  122. Segment(A, BBA) → jug4vet2
  123. Segment(Midpoint[A, B], ABH) → hsq5pijl1
  124. Segment(A, ABH) → hsq5pijl2
  125. Segment(B, ABH) → hsq5pijl3
  126. Segment(A, B) → hsq5vet1
  127. Segment(Midpoint[A, B], ABHR) → hrh6pijl1
  128. Segment(A, ABHR) → hrh6pijl2
  129. Segment(B, ABHR) → hrh6pijl3
  130. Segment(A, B) → hrh6vet1
  131. Segment(A, ABT) → smb9pijl1
  132. Segment(A, B) → smb9pijl2
  133. Segment(A, ABR) → smb9pijl3
  134. Segment(A, ABL) → lb10pijl1
  135. Segment(A, B) → lb10pijl2
  136. Segment(A, BA) → lb10pijl3
  137. Segment(A, Midpoint[BA, B]) → hsq11pijl1
  138. Segment(A, B) → hsq11pijl2
  139. Segment(A, BA) → hsq11pijl3
  140. Segment(A, Midpoint[ABR, B]) → hrh12pijl1
  141. Segment(A, ABR) → hrh12pijl2
  142. Segment(A, B) → hrh12pijl3
  143. Segment(A, ABAB) → smb13pijl1
  144. Segment(B, ABAB) → smb13pijl2
  145. Segment(ABA, ABAB) → smb13pijl3
  146. Segment(A, B) → smb13vet1
  147. Segment(A, ABA) → smb13vet2
  148. Segment(A, BARB) → alm14pijl1
  149. Polygon(EE, EC, DD) → ESquare1boven1, i_1, j_1, ec
  150. Polygon(CC, EC, DD) → ESquare1boven2, k_1, l_1, m_1
  151. Intersect(Line[C, Line[DB, E]], Line[E, Line[DB, C]]) → CE
  152. Polygon(DO, E, CE) → ESquare7boven1, r, s, t
  153. Polygon(DO, CE, C) → ESquare7boven2, a, b, f_1
  154. Polygon(EE, ECJ, DD) → EJug4boven1, q_1, r_1, ecj
  155. Polygon(CC, ECJ, DD) → EJug4boven2, s_1, t_1, f_2
  156. Polygon(CC, DD, CDHS) → EHSquare5boven, cdhs, g_2, h_2
  157. Polygon(CC, DD, CDHR) → EHRhombus6boven, cdhr, i_2, j_2
  158. Polygon(DO, E, CESB) → ESmBiped9boven1, g_1, h_1, n_1
  159. Polygon(DO, CESB, C) → ESmBiped9boven2, p_1, a_1, b_1
  160. Polygon(DO, E, CELB) → ELBiped10boven1, c_1, e_1, k_2
  161. Polygon(DO, CELB, C) → ELBiped10boven2, l_2, m_2, n_2
  162. Polygon(C, DO, E) → EHSquare11boven11, p_2, q_2, r_2
  163. Polygon(EE, ECSB, DD) → ESmbiped13boven1, s_2, t_2, ecsb
  164. Polygon(DD, ECSB, CC) → ESmbiped13boven2, d_2, f_3, g_3
  165. Polygon(DO, E, CEA) → EAlmond14onder1, a_2, b_2, c_2
  166. Polygon(DO, CEA, C) → EAlmond14onder2, e_2, h_3, i_3
  167. Dilate(A, 0.75, Centroid[Almond14]) → A'_{12}
  168. Dilate(B, 0.75, Centroid[Almond14]) → B'_{12}
  169. Dilate(BARB, 0.75, Centroid[Almond14]) → BARB'_1
  170. Dilate(ABR, 0.75, Centroid[Almond14]) → ABR'_2
  171. Polygon(A'_{12}, B'_{12}, BARB'_1, ABR'_2) → Almond14', a'_{12}, b'_{12}, barb'_1, abr'_2
  172. Segment(A, B) → alm14pijl2
  173. Segment(A, ABR) → alm14pijl3

AI Drawing Prompt Reference

Draw a set of Islamic-style muqarnas units. Start with a square defined by two base points)Skip. From its sides, generate multiple symmetric polygons, diamonds, and triangles via rotations and intersections. Inside the square, create scaled-down similar polygons to form nested layers. Add curved edges and crossing lines from rotated points around the perimeter. Keep the design symmetrical with acute, right, and oblique angles, giving a precise fractal-like appearance.
The prompt above was compiled from the original drawing commands and is for reference only.