From Circles to Polygons: Constructing Islamic Geometric Patterns

From Circles to Polygons: Constructing Islamic Geometric Patterns
Loading the math board and drawing, please wait…
2019-12-31 16:20
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

  1. ConstructionStep() → stap
  2. Point(xAxis) → A
  3. Rotate(A, 54°) → A'
  4. Line(O, A') → f
  5. Mirror(A', xAxis) → A''
  6. Line(O, A'') → g
  7. Line(A', g) → h
  8. Line(A'', f) → i
  9. Intersect(h, i) → B
  10. Sequence(Translate[f, ((nn * x(B)), 0)], nn, -3, 3) → l1
  11. Sequence(Translate[h, ((nn * x(B)), 0)], nn, -4, 3) → l2
  12. Midpoint(O, A') → C
  13. Circle(A', C) → c
  14. Circle(O, C) → d
  15. Sequence(Translate[c, Vector[(nn * Vector[A', B])]], nn, -1, 3) → l3
  16. Sequence(Translate[l3, ((nn * x(B)), 0)], nn, -4, 3) → l4
  17. Rotate(C, 36°) → C'
  18. Rotate(C, (-(36°))) → C'_1
  19. Rotate(C, (-(72°))) → C'_2
  20. Rotate(C, 72°) → C'_3
  21. Rotate(C, 108°) → C'_4
  22. Rotate(C, (-(108°))) → C'_5
  23. Rotate(C, 144°) → C'_6
  24. Rotate(C, (-(144°))) → C'_7
  25. Rotate(C, 180°) → C'_8
  26. Segment(C', C'_6) → j
  27. Segment(C'_3, C'_8) → k
  28. Segment(C'_4, C'_7) → l
  29. Segment(C'_6, C'_5) → m
  30. Segment(C'_8, C'_2) → n
  31. Segment(C'_7, C'_1) → p
  32. Segment(C'_5, C) → q
  33. Segment(C'_2, C') → r
  34. Segment(C'_1, C'_3) → s
  35. Segment(C, C'_4) → t
  36. Intersect(s, t) → D
  37. Intersect(j, s) → E
  38. Intersect(k, t) → F
  39. Intersect(j, k) → G
  40. Intersect(j, l) → H
  41. Intersect(k, l) → I
  42. Intersect(k, m) → J
  43. Intersect(l, m) → K
  44. Intersect(l, n) → L
  45. Intersect(m, n) → M
  46. Intersect(m, p) → N
  47. Intersect(n, p) → P
  48. Intersect(n, q) → Q
  49. Intersect(p, q) → R
  50. Intersect(p, r) → S
  51. Intersect(q, r) → T
  52. Intersect(q, s) → U
  53. Intersect(r, s) → V
  54. Intersect(r, t) → W
  55. PolyLine(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) → a
  56. Intersect(j, t) → Z
  57. PolyLine(D, E, M, N, P, Q, R, S, T, U, V, W, Z, D, F, G, H, I, J, K, L) → b
  58. Segment(O, C'_3) → e
  59. OrthogonalLine(C'_3, e) → f_1
  60. Segment(C, O) → g_1
  61. OrthogonalLine(C, g_1) → h_1
  62. Segment(C', O) → i_1
  63. OrthogonalLine(C', i_1) → j_1
  64. Intersect(h_1, j_1) → A_1
  65. Intersect(f_1, j_1) → B_1
  66. Polygon(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_1
  67. Sequence(Translate[veelhoek1, Vector[(nn * Vector[A', B])]], nn, -2, 2) → l6
  68. Sequence(Translate[l6, Vector[(nn * Vector[O, B])]], nn, -4, 4) → l7
  69. Sequence(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) → l8
  70. Sequence(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) → l9
  71. Sequence(Translate[l8, Vector[(nn * Vector[O, B])]], nn, -3, 3) → l10
  72. Sequence(Translate[l9, Vector[(nn * Vector[O, B])]], nn, -3, 3) → l11
  73. Mirror(E, Segment[B_1, A_1]) → E'
  74. Mirror(W, Segment[B_1, A_1]) → W'
  75. Mirror(D, Segment[B_1, A_1]) → D'
  76. Polygon(E', C', W', D') → vierhoek1, e', c', w', d'
  77. Mirror(E', y = y(A')) → E''
  78. Mirror(C', y = y(A')) → C''
  79. Mirror(W', y = y(A')) → W''
  80. Mirror(D', y = y(A')) → D''
  81. Polygon(E'', C'', W'', D'') → vierhoek1', e'', c'', w'', d''
  82. Sequence(Translate[l12, Vector[(nn * Vector[O, A''])]], nn, -3, 3) → l13
  83. Sequence(Translate[l13, Vector[(nn * Vector[O, B])]], nn, -3, 3) → l14