From Circles to Polygons: Constructing Islamic Geometric Patterns
Loading the math board and drawing, please wait…
This GeoGebra example demonstrates how to construct an Islamic-style geometric pattern by transitioning from circles to polygons. It showcases the interplay between circles, regular polygons, and symmetry operations such as rotation and reflection. The core mathematical concepts include circle geometry, polygon properties, symmetry groups, and the use of midpoints and perpendicular lines. The construction employs a step-by-step approach using GeoGebra commands: ConstructionStep to sequence the process, Point to define key vertices, Rotate to create rotational symmetry, Line and Mirror for reflection axes, Intersect to find crossing points, Sequence to generate repeated elements, Midpoint for center points, Circle for the base circular guides, Segment and PolyLine to outline edges, OrthogonalLine for perpendicular constructions, and Polygon to fill the final polygonal regions. This resource is suitable for middle school through high school students and educators, serving as an engaging way to explore geometric transformations, symmetry, and the mathematical foundations of Islamic art patterns.
GeoGebra Commands & Parameters
ConstructionStep() → stapPoint(xAxis) → ARotate(A, 54°) → A'Line(O, A') → fMirror(A', xAxis) → A''Line(O, A'') → gLine(A', g) → hLine(A'', f) → iIntersect(h, i) → BSequence(Translate[f, ((nn * x(B)), 0)], nn, -3, 3) → l1Sequence(Translate[h, ((nn * x(B)), 0)], nn, -4, 3) → l2Midpoint(O, A') → CCircle(A', C) → cCircle(O, C) → dSequence(Translate[c, Vector[(nn * Vector[A', B])]], nn, -1, 3) → l3Sequence(Translate[l3, ((nn * x(B)), 0)], nn, -4, 3) → l4Rotate(C, 36°) → C'Rotate(C, (-(36°))) → C'_1Rotate(C, (-(72°))) → C'_2Rotate(C, 72°) → C'_3Rotate(C, 108°) → C'_4Rotate(C, (-(108°))) → C'_5Rotate(C, 144°) → C'_6Rotate(C, (-(144°))) → C'_7Rotate(C, 180°) → C'_8Segment(C', C'_6) → jSegment(C'_3, C'_8) → kSegment(C'_4, C'_7) → lSegment(C'_6, C'_5) → mSegment(C'_8, C'_2) → nSegment(C'_7, C'_1) → pSegment(C'_5, C) → qSegment(C'_2, C') → rSegment(C'_1, C'_3) → sSegment(C, C'_4) → tIntersect(s, t) → DIntersect(j, s) → EIntersect(k, t) → FIntersect(j, k) → GIntersect(j, l) → HIntersect(k, l) → IIntersect(k, m) → JIntersect(l, m) → KIntersect(l, n) → LIntersect(m, n) → MIntersect(m, p) → NIntersect(n, p) → PIntersect(n, q) → QIntersect(p, q) → RIntersect(p, r) → SIntersect(q, r) → TIntersect(q, s) → UIntersect(r, s) → VIntersect(r, t) → WPolyLine(C', E, C'_7, N, C'_5, Q, C'_2, S, C'_1, U, C, W, C'_3, C', F, C'_4, H, C'_6, J, C'_8, L) → aIntersect(j, t) → ZPolyLine(D, E, M, N, P, Q, R, S, T, U, V, W, Z, D, F, G, H, I, J, K, L) → bSegment(O, C'_3) → eOrthogonalLine(C'_3, e) → f_1Segment(C, O) → g_1OrthogonalLine(C, g_1) → h_1Segment(C', O) → i_1OrthogonalLine(C', i_1) → j_1Intersect(h_1, j_1) → A_1Intersect(f_1, j_1) → B_1Polygon(A_1, B_1, 10) → veelhoek1, k_1, a_1, C_1, D_1, E_1, F_1, G_1, H_1, I_1, J_1, l_1, m_1, n_1, p_1, q_1, r_1, s_1, t_1Sequence(Translate[veelhoek1, Vector[(nn * Vector[A', B])]], nn, -2, 2) → l6Sequence(Translate[l6, Vector[(nn * Vector[O, B])]], nn, -4, 4) → l7Sequence(PolyLine[Translate[C', Vector[(nn * Vector[O, A''])]], Translate[E, Vector[(nn * Vector[O, A''])]], Translate[C'_3, Vector[(nn * Vector[O, A''])]], Translate[F, Vector[(nn * Vector[O, A''])]], Translate[C'_4, Vector[(nn * Vector[O, A''])]], Translate[H, Vector[(nn * Vector[O, A''])]], Translate[C'_6, Vector[(nn * Vector[O, A''])]], Translate[J, Vector[(nn * Vector[O, A''])]], Translate[C'_8, Vector[(nn * Vector[O, A''])]], Translate[L, Vector[(nn * Vector[O, A''])]], Translate[C'_7, Vector[(nn * Vector[O, A''])]], Translate[N, Vector[(nn * Vector[O, A''])]], Translate[C'_5, Vector[(nn * Vector[O, A''])]], Translate[Q, Vector[(nn * Vector[O, A''])]], Translate[C'_2, Vector[(nn * Vector[O, A''])]], Translate[S, Vector[(nn * Vector[O, A''])]], Translate[C'_1, Vector[(nn * Vector[O, A''])]], Translate[U, Vector[(nn * Vector[O, A''])]], Translate[C, Vector[(nn * Vector[O, A''])]], Translate[W, Vector[(nn * Vector[O, A''])]], Translate[C', Vector[(nn * Vector[O, A''])]]], nn, -3, 3) → l8Sequence(PolyLine[Translate[D, Vector[(nn * Vector[O, A''])]], Translate[E, Vector[(nn * Vector[O, A''])]], Translate[Z, Vector[(nn * Vector[O, A''])]], Translate[F, Vector[(nn * Vector[O, A''])]], Translate[G, Vector[(nn * Vector[O, A''])]], Translate[H, Vector[(nn * Vector[O, A''])]], Translate[I, Vector[(nn * Vector[O, A''])]], Translate[J, Vector[(nn * Vector[O, A''])]], Translate[K, Vector[(nn * Vector[O, A''])]], Translate[L, Vector[(nn * Vector[O, A''])]], Translate[M, Vector[(nn * Vector[O, A''])]], Translate[N, Vector[(nn * Vector[O, A''])]], Translate[P, Vector[(nn * Vector[O, A''])]], Translate[Q, Vector[(nn * Vector[O, A''])]], Translate[R, Vector[(nn * Vector[O, A''])]], Translate[S, Vector[(nn * Vector[O, A''])]], Translate[T, Vector[(nn * Vector[O, A''])]], Translate[U, Vector[(nn * Vector[O, A''])]], Translate[V, Vector[(nn * Vector[O, A''])]], Translate[W, Vector[(nn * Vector[O, A''])]], Translate[D, Vector[(nn * Vector[O, A''])]]], nn, -3, 3) → l9Sequence(Translate[l8, Vector[(nn * Vector[O, B])]], nn, -3, 3) → l10Sequence(Translate[l9, Vector[(nn * Vector[O, B])]], nn, -3, 3) → l11Mirror(E, Segment[B_1, A_1]) → E'Mirror(W, Segment[B_1, A_1]) → W'Mirror(D, Segment[B_1, A_1]) → D'Polygon(E', C', W', D') → vierhoek1, e', c', w', d'Mirror(E', y = y(A')) → E''Mirror(C', y = y(A')) → C''Mirror(W', y = y(A')) → W''Mirror(D', y = y(A')) → D''Polygon(E'', C'', W'', D'') → vierhoek1', e'', c'', w'', d''Sequence(Translate[l12, Vector[(nn * Vector[O, A''])]], nn, -3, 3) → l13Sequence(Translate[l13, Vector[(nn * Vector[O, B])]], nn, -3, 3) → l14