'BEGIN SCRIPT Coils=3 SegmentsPerCoil=30 Sign=1 WireOD=0.125 SpringOD=1 InstalledHeight=2 FreeHeight=2 X0=0 Y0=0 Z0=0 'DO NOT EDIT PAST THIS POINT IF InstalledHeight < (Coils+1)*WireOD THEN InstalledHeight=(Coils+1)*WireOD IF FreeHeight < InstalledHeight THEN FreeHeight=InstalledHeight EndCoils=Coils/2*((FreeHeight-InstalledHeight)/(FreeHeight-Coils*WireOD))^4 IF Sign < 0 THEN Sign=-1 ELSE Sign=1 END IF Coils=Coils-2*EndCoils r=(SpringOD-WireOD)/2 h=(InstalledHeight-(1+2*EndCoils)*WireOD)/2 k=(Coils*WireOD/Pi)*Cos(Atn(WireOd/(2*Pi*r))) k1=k/h a=Atn(k1/sqr(1-k1*k1)) Coils=Coils+Coils/Pi*a/cos(a) k=(Coils*WireOD/Pi)*Cos(Atn(WireOd/(2*Pi*r))) k1=k/h a=Atn(k1/sqr(1-k1*k1)) StepsCount=(Coils+2+2*EndCoils)*SegmentsPerCoil tMin=0-(1+EndCoils)*Pi/Coils tMax=Pi+(1+EndCoils)*Pi/Coils FUNCTION x(t) x=X0-r*Sign*Cos(2*Coils*t) END FUNCTION FUNCTION y(t) y=Y0+r*Sin(2*Coils*t) END FUNCTION FUNCTION z(t) IF t < a THEN z=Z0+InstalledHeight/2+h*Cos(a)-(t-a)*k ELSE IF t > (Pi-a) THEN z=Z0+InstalledHeight/2+h*Cos(Pi-a)-(t-Pi+a)*k ELSE z=Z0+InstalledHeight/2+h*Cos(t) END IF END IF END FUNCTION 'END SCRIPT