Double Glide Reflection Tessellation (Escher Style)
Loading the math board and drawing, please wait…
① This example demonstrates how to create an Escher-style periodic tessellation by applying two glide reflections (a combination of translation and reflection) to a base polygon, filling the plane seamlessly. ② Core mathematical concepts include plane tessellation, glide reflection transformations, translation vectors, symmetry, and geometric construction. ③ Construction highlights: from the summary, GeoGebra commands such as Vector, Point, PointIn, LineBisector, Translate, and Polygon are used; vectors u and v, points A, B, etc., define the translation framework, while perpendicular bisectors create reflection axes, and the polygon poly1 is translated and reflected to generate repeating units. ④ Suitable for upper secondary or early university students learning geometric transformations and tessellation art, also valuable for interdisciplinary math-art teaching to explore symmetry and pattern design.
GeoGebra Commands & Parameters
Vector(A, B) → uPoint(Ray[A, A + OrthogonalVector[Segment[A, B]]]) → CPointIn(Polygon[D, B, (2 * A) - B, (2 * C) - D]) → EPointIn(Polygon[D, B, (2 * A) - B, (2 * C) - D]) → FPointIn(Polygon[D, B, (2 * A) - B, (2 * C) - D]) → GPointIn(Polygon[D, B, (2 * A) - B, (2 * C) - D]) → HPointIn(Polygon[D, B, (2 * A) - B, (2 * C) - D]) → ILineBisector(D, B) → fTranslate(Mirror[E, f], u) → JTranslate(Mirror[F, f], u) → KTranslate(Mirror[G, f], u) → LTranslate(Mirror[H, f], u) → MTranslate(Mirror[I, f], u) → NPointIn(Polygon[C, D, (2 * B) - D, (2 * A) - C]) → OTranslate(Mirror[O, f], u) → B_1PointIn(Polygon[C, D, (2 * B) - D, (2 * A) - C]) → PPointIn(Polygon[C, D, (2 * B) - D, (2 * A) - C]) → QPointIn(Polygon[C, D, (2 * B) - D, (2 * A) - C]) → RPointIn(Polygon[C, D, (2 * B) - D, (2 * A) - C]) → SLineBisector(C, D) → gVector(A, C) → vTranslate(Mirror[E, g], Vector[(-v)]) → A_1Translate(Mirror[O, g], v) → TTranslate(Mirror[P, g], v) → UTranslate(Mirror[Q, g], v) → VTranslate(Mirror[R, g], v) → WTranslate(Mirror[S, g], v) → ZPolygon(E, F, A_1, J, K, L, M, N, B_1, T, U, V, G, W, Z, H, I, O, P, Q, R, S) → poly1, h, r, s, t, a, b, c, d, e, f_1, g_1, i, h_1, i_1, j_1, j, k, l, m, n, p, qTranslate(Polygon[Mirror[E, g], Mirror[F, g], Mirror[G, g], Mirror[H, g], Mirror[I, g], Mirror[O, g], Mirror[P, g], Mirror[Q, g], Mirror[R, g], Mirror[S, g], Mirror[A_1, g], Mirror[J, g], Mirror[K, g], Mirror[L, g], Mirror[M, g], Mirror[N, g], Mirror[B_1, g], Mirror[T, g], Mirror[U, g], Mirror[V, g], Mirror[W, g], Mirror[Z, g]], v) → poly2Translate(Polygon[Mirror[E, g], Mirror[F, g], Mirror[G, g], Mirror[H, g], Mirror[I, g], Mirror[O, g], Mirror[P, g], Mirror[Q, g], Mirror[R, g], Mirror[S, g], Mirror[A_1, g], Mirror[J, g], Mirror[K, g], Mirror[L, g], Mirror[M, g], Mirror[N, g], Mirror[B_1, g], Mirror[T, g], Mirror[U, g], Mirror[V, g], Mirror[W, g], Mirror[Z, g]], Vector[(-v)]) → poly3Translate(Polygon[Mirror[E, f], Mirror[F, f], Mirror[G, f], Mirror[H, f], Mirror[I, f], Mirror[O, f], Mirror[P, f], Mirror[Q, f], Mirror[R, f], Mirror[S, f], Mirror[A_1, f], Mirror[J, f], Mirror[K, f], Mirror[L, f], Mirror[M, f], Mirror[N, f], Mirror[B_1, f], Mirror[T, f], Mirror[U, f], Mirror[V, f], Mirror[W, f], Mirror[Z, f]], Vector[(-u)]) → poly4Translate(Polygon[Mirror[E, f], Mirror[F, f], Mirror[G, f], Mirror[H, f], Mirror[I, f], Mirror[O, f], Mirror[P, f], Mirror[Q, f], Mirror[R, f], Mirror[S, f], Mirror[A_1, f], Mirror[J, f], Mirror[K, f], Mirror[L, f], Mirror[M, f], Mirror[N, f], Mirror[B_1, f], Mirror[T, f], Mirror[U, f], Mirror[V, f], Mirror[W, f], Mirror[Z, f]], u) → poly5Translate(Mirror[poly3, f], u) → poly6Translate(Mirror[poly2, f], u) → poly7Translate(poly7, Vector[(-2 * u)]) → poly7'Translate(poly6, Vector[(-2 * u)]) → poly6'Translate(Mirror[poly4, f], Vector[(-u)]) → poly8Translate(poly8, Vector[(4 * u)]) → poly8'Translate(poly3, Vector[(2 * u)]) → poly3'Translate(poly2, Vector[(2 * u)]) → poly2'Translate(poly4, Vector[(-2 * v)]) → poly4'Translate(Mirror[poly3, g], Vector[(-v)]) → poly9Translate(poly4', Vector[(2 * u)]) → poly4''Translate(poly4, Vector[(2 * v)]) → poly4'_1Translate(poly5, Vector[(2 * v)]) → poly5'Translate(Mirror[poly4', f], u) → poly10
AI Drawing Prompt Reference
Create an Escher-style periodic tessellation by applying two glide reflections (a combination of translation and reflection) to a base polygon, filling the plane seamlessly. Start by constructing a polygon, then define two vectors for the translation framework and use perpendicular bisectors to create reflection axes. Translate and reflect the polygon to generate repeating units, and combine these units to form the entire tessellated pattern.
The prompt above was compiled from the original drawing commands and is for reference only.