Google Classroom
GeoGebraGeoGebra Classroom

12-fold pattern in 6-4-3-4 grid

Inspired by Sarah Brewer's art: https://youtu.be/tcZQLpnxGpw?si=jpHXioB4AujGJjUw

GeoGebra script

# Base construction: Hexagon and two squares A = (0, 0) B = (1, 0) hex = Polygon(A, B, 6) sq1 = Polygon(B, A, 4) sq2 = Polygon(C, B, 4) SetFilling(hex, 0) SetFilling(sq1, 0) SetFilling(sq2, 0) #---------------- # Draw First Polygonal Shape (Kite) pbAB = PerpendicularBisector(A, B) pbBC = PerpendicularBisector(B, C) Center = Intersect(pbAB, pbBC) MPointAB = Midpoint(A, B) MPointBC = Midpoint(B, C) c1 = Circle(B, MPointAB) angleBisector = Line(B, Center) M = Intersect(angleBisector, c1, 2) c2 = Circle(Center, M) l1 = Line(A, C) l2 = Line(H, I) pbHB = PerpendicularBisector(H, B) θ = Slider(1°, 90°, 0.5°, 1, 230) l3 = Line(Rotate(Center, θ, M), M) angleBisector2 = AngleBisector(MPointAB, Center, B) I1 = Intersect(l3, pbAB) I2 = Intersect(l3, angleBisector2) l3' = Reflect(l3, angleBisector2) I3 = Intersect(c2, pbAB, 1) I4 = Reflect(I2, pbAB) K1 = Polygon(I1, I2, I3, I4) #---------------- # Draw Second Polygonal Shape angleBisector3 = AngleBisector(A, B, Center) l3'' = Reflect(l3', pbAB) Z1 = Intersect(l1, l3'') l3''' = Reflect(l3'', l1) Z2 = Intersect(c1, angleBisector3, 2) Z3 = Reflect(Z1, angleBisector3) Z4 = Reflect(Z2, pbAB) Z5 = Reflect(Z1, pbAB) K2 = Polygon(Z1, Z2, Z3, Z4, Z5, I3) #---------------- # Apply rotations Lk = 0..11 Layer1 = Zip(Rotate(K1, pi/6 * k, Center), k, Lk) Ln = 0..5 Layer2 = Zip(Rotate(K2, pi/3 * k, Center), k, Ln) Layer3 = Zip(Rotate(Reflect(Layer1, l1), pi/3 * k, Center), k, Ln) # Draw Third Polygonal Shape # Inside bottom square K3 = Reflect(K2, l) l4 = Line(I3', Z5') l5 = Segment(B, G) K = Intersect(pbAB, pbHB) l6 = AngleBisector(MPointAB, K, B) X1 = Intersect(l4, l6) l4' = Reflect(l4, l6) X2 = Intersect(l4', l5) K4 = Polyline(I3', X1, X2) # Star Layer4 = Zip(Rotate(K4, pi/4 * k, K), k, 0..7) Layer5 = Zip(Rotate(K3, pi/2 * k, K), k, 0..3) # Draw more K5 = Rotate(K3, pi/2, B) Z1'' = Rotate(Z1', pi/2, B) Z3'' = Rotate(Z3', pi/2, B) Z4'' = Rotate(Z4', pi/2, B) Z5'' = Rotate(Z5', pi/2, B) l7 =Line(Z4'',Z5'') l8 = AngleBisector(Z4'', H, B) l9 = Line(Z1'', Z4'') Y1 = Intersect(l7, l8) l7'' = Reflect(l7, l8) Y2 = Intersect(l9, l7'') l10 = AngleBisector(Y2, H, I) W1 = Reflect(Y2, l10) W2 = Reflect(Y1, l10) W3= Reflect(Z4'', l10) W4 = Reflect(Y1, l9) K6 = Polygon(W1, W2, W3, W4) Layer6 = Zip(Rotate(K6, pi/6 * k, H), k, 0..5) Layer7 = Zip(Rotate(Layer4, pi/3 * k, Center), k, 0..5) Layer8 = Zip(Rotate(Layer5, pi/3 * k, Center), k, 0..5) Layer9 = Zip(Rotate(K5, pi/3 * k, Center), k, 0..5) Layer10 = Zip(Rotate(Layer6, pi/6 * k, Center), k, 0..11) Layer11 = Zip(Rotate(sq1, pi/3 * k, Center), k, 0..5) SetFilling(Layer11, 0) Layer12 = Polygon(G, H, 12) SetFilling(Layer12, 0) # Extra Settings ListLinSegm = {"angleBisector", "angleBisector2", "angleBisector3", "l1", "l2", "l3", "l4", "l5", "l6", "l7", "l8", "l9", "l10", "l3'", "l3''", "l3'''", "l4'", "l7''", "pbAB", "pbBC", "pbHB"} Execute(Zip("SetVisibleInView("+name+", 1, false)", name, ListLinSegm)) Delete(ListLinSegm) ListPointsCircles = {"Center", "A", "B", "C", "D", "E", "F", "G", "H", "I", "I1", "I2", "I3", "I4", "I3'", "I3''", "J", "K", "L", "M", "MPointAB", "MPointBC", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W1", "W2", "W3", "W4", "X1", "X2", "Y1", "Y2", "Z1", "Z2", "Z3", "Z4", "Z5", "Z1'", "Z1''", "Z2'", "Z2''", "Z3'", "Z3''", "Z4'", "Z4''", "Z5'", "Z5''", "c1", "c2"} Execute(Zip("SetVisibleInView("+name+", 1, false)", name, ListPointsCircles)) Delete(ListPointsCircles) Execute(Zip("SetVisibleInView(K"+k+", 1, false)", k, 1..6)) Execute(Zip("SetVisibleInView(w"+k+", 1, false)", k, 1..4)) Execute(Zip("SetVisibleInView(i"+k+", 1, false)", k, 1..4)) Execute(Zip("SetVisibleInView(z"+k+", 1, false)", k, 1..5)) ListSeg = {"a", "q_1", "p_1", "n_1", "t_1", "s_1", "r_1"} Execute(Zip("SetVisibleInView("+name+", 1, false)", name, ListSeg)) Delete(ListSeg) CenterView(Center) ShowGrid(false) ShowAxes(false)