GeoGebra Script versión 003

El siguiente ggbscript es un poco más corto.
#Points hexagon n=6 Execute(Sequence("A"+i+"=Rotate( (cos(pi/3*"+i+"), sin(pi/3*"+i+")), -pi/6, (0,0) )", i, 1, n)) #Hexagon Poly01=Polygon(A1, A2, A3, A4, A5, A6) #Origin O=(0,0) #Segment from center S2=Segment(O, A2) S4=Segment(O, A4) S6=Segment(O, A6) #Circles corners r=Slider(0.1, 1, 0.1, 1, 140, false, true, false, false) C1=Circle(A1, r) C3=Circle(A3, r) #Circle center C0=Circle(O, r) #Intersections I1=Intersect( C1, a1 ) J1=Intersect( C3, a2 ) L1=Intersect( C0, S2 ) #Object T1=Polygon( A1, I1, L1, J1, A3, O ) T2=Rotate(T1, 2*pi/3, O) T3=Rotate(T1, -2*pi/3, O) #Vectors auxray=Ray(O, A1) auxPoint=Intersect(C1, auxray, 2) u1=Vector(O, auxPoint ) u2=Rotate(u1, pi/3) #u3=Rotate(u1, 2*pi/3) u3=u1+u2 u4=u1+2*u2 u5=2*u1+u2 #First ring Execute(Sequence("FA"+i+"=Translate( T1, Rotate( u1, pi/3*"+i+", O ))", i, 1, 6)) Execute(Sequence("FB"+i+"=Translate( T2, Rotate( u1, pi/3*"+i+", O ))", i, 1, 6)) Execute(Sequence("FC"+i+"=Translate( T3, Rotate( u1, pi/3*"+i+", O ))", i, 1, 6)) #Second ring Execute(Sequence("SA"+i+"=Translate( T1, If(Mod("+i+", 2)==0, Rotate( u1 + u2, pi/3*("+i+"/2-1), O ), Rotate( 2*u1, pi/3*(("+i+"+1)/2-1), O ) ) )", i, 1, 12)) Execute(Sequence("SB"+i+"=Translate( T2, If(Mod("+i+", 2)==0, Rotate( u1 + u2, pi/3*("+i+"/2-1), O ), Rotate( 2*u1, pi/3*(("+i+"+1)/2-1), O ) ) )", i, 1, 12)) Execute(Sequence("SC"+i+"=Translate( T3, If(Mod("+i+", 2)==0, Rotate( u1 + u2, pi/3*("+i+"/2-1), O ), Rotate( 2*u1, pi/3*(("+i+"+1)/2-1), O ) ) )", i, 1, 12))