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)