Geometric linkage
Script Setup
easingFunc(x) = pi/3*sin(pi/2*cos(x+pi/2))
speed = 1
t = Slider(0, 2pi, 0.01, speed, 200)
Ln = 1...6
LP = Zip(( cos(k * 2pi/6), sin(k * 2pi/6) ), k, Ln)
hexBase = Polygon(LP)
P1 = Rotate(hexBase, easingFunc(t))
Q1 = Rotate(LP(1), easingFunc(t))
Q2 = Rotate(LP(2), easingFunc(t))
TL1 = Rotate(Polygon(Q2, Q1, 3), -easingFunc(t) *(3/pi) *pi/2+ pi/2 , Q2)
TL2 = Rotate(Polygon(Q2, Q1, 3), -easingFunc(t) *(3/pi) *pi/2- pi/2 , Q1)
LT = Zip(Rotate(TL1, k * 2pi/6), k, Ln)
VA1 = Vertex( TL1, 1)
VA2 = Vertex( TL1, 2)
VA3 = Vertex( TL1, 3)
VB1 = Vertex( TL2, 1)
VB2 = Vertex( TL2, 2)
VB3 = Vertex( TL2, 3)
TL3 = Polygon(VA2, VB1, 3)
VP1 = Reflect(VB1, Segment(VA2, Vertex(TL3, 3)))
VP2 = Reflect(VA2, Segment(VB1, Vertex(TL3, 3)))
TR1 = Polygon({VA2, VB1, VP2, VP1})
LTR = Zip(Rotate(TR1, k * 2pi/6), k, Ln)
Base

Two layers

Four layers

If you enjoy my work, you can support me in Patreon
Thank! :)