function square(m,a) {var b=Rotation(a,m,Math.PI/2,'hidden') var c=Rotation(b,m,Math.PI/2,'hidden') var d=Rotation(c,m,Math.PI/2,'hidden') Segment(a,b,'') Segment(b,c,'') Segment(c,d,'') Segment(d,a,'') return [a,b] } function spiral(m,z,f,n) {if (n>0){ var aux=DilationMarkedRatio(z[0],z[1],f,'hidden') var z=square(m,aux) spiral(m,z,f,n-1)} } M=Point(200,200,'hidden') A=Point(360,360,'hidden') z=square(M,A) seg=Segment(z[0],z[1],'hidden') p=Point_on_object(seg,0.05,'label(Move)') f=RatioPoints(z[1],z[0],p,100,100,'f=','hidden') spiral(M,z,f,50) AnimateButton(10,10,'Animate',[p,seg],[0.5],[0],[0],'')