Muqarnas Units
Loading the math board and drawing, please wait…
In collections
building muqarnas in GeoGebra
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
Rotate(A + (1 / sin(67.5°) * (B - A)), 22.5°, A) → BARBRotate(B, 135°, A) → BBARotate(B, 45°, A) → ABRRotate(B, 45°, A) → ABSMRotate(A + (sin(45°) / sin(112.5°) * (B - A)), 22.5°, A) → ABTRotate(A, (-(90°)), B) → ABRotate(B, (-(135°)), A) → ABARotate(A + (sin(45°) / sin(22.5°) * (B - A)), 112.5°, A) → ABABIntersect(Line[A, Rotate[B, 45°, A]], Line[B, Rotate[A, (-(45°)), B]]) → ABHIntersect(Line[A, Rotate[B, 67.5°, A]], Line[B, Rotate[A, (-(67.5°)), B]]) → ABHRRotate(B, 90°, A) → BARotate(B, 135°, A) → BARIntersect(OrthogonalLine[B, Line[A, B]], OrthogonalLine[BBA, Line[BBA, A]]) → BBABSegment(A, ABT) → t9pijl1Segment(A, B) → t9pijl2Segment(A, ABR) → t9pijl3Segment(A, BBAB) → t3pijl1Segment(B, BBAB) → t3pijl2Segment(BBA, BBAB) → t3pijl3Segment(BBA, A) → t3vet1Segment(A, B) → t3vet2Intersect(Line[C, Rotate[DB, 45°, Line[C, C + (0, 0, 1)]]], Line[E, Rotate[DB, (-(45°)), Line[E, E + (0, 0, 1)]]]) → CESBIntersect(Line[C, Rotate[DB, 22.5°, Line[C, C + (0, 0, 1)]]], Line[E, Rotate[DB, (-(22.5°)), Line[E, E + (0, 0, 1)]]]) → CELBIntersect(Line[C, Rotate[DB, 90°, Line[C, C + (0, 0, 1)]]], Line[E, Rotate[DB, (-(90°)), Line[E, E + (0, 0, 1)]]]) → CEAPolygon(A, B, ABT, ABR) → SmBiped9, smb92, smb91, smb94, smb93Dilate(A, 0.75, Centroid[SmBiped9]) → A'Dilate(B, 0.75, Centroid[SmBiped9]) → B'Dilate(ABT, 0.75, Centroid[SmBiped9]) → ABT'Dilate(ABR, 0.75, Centroid[SmBiped9]) → ABR'Polygon(A, B, BARB, BBA) → Almond3, alm31, alm32, alm33, alm34Polygon(A', B', ABT', ABR') → SmBiped9', a', b', abt', abr'Dilate(A, 0.75, Centroid[Almond3]) → A'_1Dilate(B, 0.75, Centroid[Almond3]) → B'_1Dilate(BBAB, 0.75, Centroid[Almond3]) → BBAB'Dilate(BBA, 0.75, Centroid[Almond3]) → BBA'Polygon(A'_1, B'_1, BBAB', BBA') → Almond3', a'_1, b'_1, bbab', bba'Polygon(D, E, EE, DD) → achter1, d, e, ee, ddPolygon(C, CC, DD, D) → achter2, c, cc, f, d_1Polygon(EE, ECA, DD) → EAlmond3boven1, g, i, ecaPolygon(CC, ECA, DD) → EAlmond3boven2, j, k, lRotate(A + (sin(22.5°) / sin(112.5°) * (B - A)), 45°, A) → ABLPolygon(A, B, AB, BA) → Square1, sq11, sq13, sq12, sq14Dilate(A, 0.75, Centroid[Square1]) → A'_2Dilate(B, 0.75, Centroid[Square1]) → B'_2Dilate(AB, 0.75, Centroid[Square1]) → AB'Dilate(BA, 0.75, Centroid[Square1]) → BA'Polygon(A'_2, B'_2, AB', BA') → Square1', a'_2, b'_2, ab', ba'Rotate(A, (-(45°)), B) → ABRHPolygon(A, B, ABRH, BAR) → Rhombus2, rh21, rh23, rh22, rh24Dilate(A, 0.75, Centroid[Rhombus2]) → A'_3Dilate(B, 0.75, Centroid[Rhombus2]) → B'_3Dilate(ABRH, 0.75, Centroid[Rhombus2]) → ABRH'Dilate(BAR, 0.75, Centroid[Rhombus2]) → BAR'Polygon(A'_3, B'_3, ABRH', BAR') → Rhombus2', a'_3, b'_3, abrh', bar'Rotate(A + (sin(67.5°) / sin(45°) * (B - A)), 67.5°, A) → BAJPolygon(A, B, BAJ, BBA) → Jug4, jug41, jug42, jug43, jug44Dilate(A, 0.75, Centroid[Jug4]) → A'_4Dilate(B, 0.75, Centroid[Jug4]) → B'_4Dilate(BAJ, 0.75, Centroid[Jug4]) → BAJ'Dilate(BBA, 0.75, Centroid[Jug4]) → BBA'_1Polygon(A'_4, B'_4, BAJ', BBA'_1) → Jug4', a'_4, b'_4, baj', bba'_1Polygon(A, B, ABH) → HSquare5, hsq52, hsq51, hsq53Dilate(A, 0.75, Centroid[HSquare5]) → A'_5Dilate(B, 0.75, Centroid[HSquare5]) → B'_5Dilate(ABH, 0.75, Centroid[HSquare5]) → ABH'Polygon(A'_5, B'_5, ABH') → HSquare5', abh', a'_5, b'_5Polygon(A, B, ABHR) → HRhombus6, hrh62, hrh61, hrh63Dilate(A, 0.75, Centroid[HRhombus6]) → A'_6Dilate(B, 0.75, Centroid[HRhombus6]) → B'_6Dilate(ABHR, 0.75, Centroid[HRhombus6]) → ABHR'Polygon(A'_6, B'_6, ABHR') → HRhombus6', abhr', a'_6, b'_6Polygon(A, B, ABL, BA) → LBiped10, lb101, lb103, lb102, lb104Dilate(A, 0.75, Centroid[LBiped10]) → A'_7Dilate(B, 0.75, Centroid[LBiped10]) → B'_7Dilate(ABL, 0.75, Centroid[LBiped10]) → ABL'Dilate(BA, 0.75, Centroid[LBiped10]) → BA'_1Polygon(A'_7, B'_7, ABL', BA'_1) → LBiped10', a'_7, b'_7, abl', ba'_1Polygon(A, B, BA) → HSquare11, hsq113, hsq111, hsq112Dilate(A, 0.75, Centroid[HSquare11]) → A'_8Dilate(B, 0.75, Centroid[HSquare11]) → B'_8Dilate(BA, 0.75, Centroid[HSquare11]) → BA'_2Polygon(A'_8, B'_8, BA'_2) → HSquare11', ba'_2, a'_8, b'_8Polygon(A, B, ABR) → HRhombus12, hrh121, hrh123, hrh122Dilate(A, 0.75, Centroid[HRhombus12]) → A'_9Dilate(B, 0.75, Centroid[HRhombus12]) → B'_9Dilate(ABR, 0.75, Centroid[HRhombus12]) → ABR'_1Polygon(A'_9, B'_9, ABR'_1) → HRhombus12', abr'_1, a'_9, b'_9Polygon(ABA, A, B, ABAB) → SmBiped13, smb132, smb131, smb134, smb133Dilate(ABA, 0.75, Centroid[SmBiped13]) → ABA'Dilate(A, 0.75, Centroid[SmBiped13]) → A'_{10}Dilate(B, 0.75, Centroid[SmBiped13]) → B'_{10}Dilate(ABAB, 0.75, Centroid[SmBiped13]) → ABAB'Polygon(ABA', A'_{10}, B'_{10}, ABAB') → SmBiped13', aba', a'_{10}, b'_{10}, abab'Polygon(A, B, BARB, ABR) → Almond14, m, n, p, qDilate(A, 0.75, Centroid[Almond14]) → A'_{11}Dilate(B, 0.75, Centroid[Almond14]) → B'_{11}Dilate(BARB, 0.75, Centroid[Almond14]) → BARB'Dilate(BAR, 0.75, Centroid[Almond14]) → BAR'_1Segment(A, AB) → sq1pijl1Segment(B, AB) → sq1pijl2Segment(A, B) → sqvet1Segment(A, BA) → sqvet2Segment(BA, AB) → sq1pijl3Segment(A, B) → sq7pijl3Segment(A, BA) → sq7pijl2Segment(A, ABRH) → rh2pijl1Segment(B, ABRH) → rh2pijl2Segment(BAR, ABRH) → rh2pijl3Segment(A, B) → rh2vet1Segment(A, BAR) → rh2vet2Segment(A, B) → rh8pijl2Segment(A, BAR) → rh8pijl3Segment(A, BARB) → alm3pijl1Segment(B, BARB) → alm3pijl2Segment(BBA, BARB) → alm3pijl3Segment(A, B) → alm3vet1Segment(A, BBA) → alm3vet2Segment(A, BAJ) → jug4pijl1Segment(B, BAJ) → jug4pijl2Segment(BBA, BAJ) → jug4pijl3Segment(A, B) → jug4vet1Segment(A, BBA) → jug4vet2Segment(Midpoint[A, B], ABH) → hsq5pijl1Segment(A, ABH) → hsq5pijl2Segment(B, ABH) → hsq5pijl3Segment(A, B) → hsq5vet1Segment(Midpoint[A, B], ABHR) → hrh6pijl1Segment(A, ABHR) → hrh6pijl2Segment(B, ABHR) → hrh6pijl3Segment(A, B) → hrh6vet1Segment(A, ABT) → smb9pijl1Segment(A, B) → smb9pijl2Segment(A, ABR) → smb9pijl3Segment(A, ABL) → lb10pijl1Segment(A, B) → lb10pijl2Segment(A, BA) → lb10pijl3Segment(A, Midpoint[BA, B]) → hsq11pijl1Segment(A, B) → hsq11pijl2Segment(A, BA) → hsq11pijl3Segment(A, Midpoint[ABR, B]) → hrh12pijl1Segment(A, ABR) → hrh12pijl2Segment(A, B) → hrh12pijl3Segment(A, ABAB) → smb13pijl1Segment(B, ABAB) → smb13pijl2Segment(ABA, ABAB) → smb13pijl3Segment(A, B) → smb13vet1Segment(A, ABA) → smb13vet2Segment(A, BARB) → alm14pijl1Polygon(EE, EC, DD) → ESquare1boven1, i_1, j_1, ecPolygon(CC, EC, DD) → ESquare1boven2, k_1, l_1, m_1Intersect(Line[C, Line[DB, E]], Line[E, Line[DB, C]]) → CEPolygon(DO, E, CE) → ESquare7boven1, r, s, tPolygon(DO, CE, C) → ESquare7boven2, a, b, f_1Polygon(EE, ECJ, DD) → EJug4boven1, q_1, r_1, ecjPolygon(CC, ECJ, DD) → EJug4boven2, s_1, t_1, f_2Polygon(CC, DD, CDHS) → EHSquare5boven, cdhs, g_2, h_2Polygon(CC, DD, CDHR) → EHRhombus6boven, cdhr, i_2, j_2Polygon(DO, E, CESB) → ESmBiped9boven1, g_1, h_1, n_1Polygon(DO, CESB, C) → ESmBiped9boven2, p_1, a_1, b_1Polygon(DO, E, CELB) → ELBiped10boven1, c_1, e_1, k_2Polygon(DO, CELB, C) → ELBiped10boven2, l_2, m_2, n_2Polygon(C, DO, E) → EHSquare11boven11, p_2, q_2, r_2Polygon(EE, ECSB, DD) → ESmbiped13boven1, s_2, t_2, ecsbPolygon(DD, ECSB, CC) → ESmbiped13boven2, d_2, f_3, g_3Polygon(DO, E, CEA) → EAlmond14onder1, a_2, b_2, c_2Polygon(DO, CEA, C) → EAlmond14onder2, e_2, h_3, i_3Dilate(A, 0.75, Centroid[Almond14]) → A'_{12}Dilate(B, 0.75, Centroid[Almond14]) → B'_{12}Dilate(BARB, 0.75, Centroid[Almond14]) → BARB'_1Dilate(ABR, 0.75, Centroid[Almond14]) → ABR'_2Polygon(A'_{12}, B'_{12}, BARB'_1, ABR'_2) → Almond14', a'_{12}, b'_{12}, barb'_1, abr'_2Segment(A, B) → alm14pijl2Segment(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.