#include "colors.inc" // Change these to control differenct aspects of the spring... #declare Ang=10; //angle that half a section of spring goes down #declare MinorR=0.1; //thickness of spring section #declare MajorR=2; // Leave these alone or you'll only give yourself a headache... #declare Ydiff=-2*MajorR*sin(radians(Ang)); #declare Xdiff=-2*MajorR*cos(radians(Ang)); camera { location <-1,3,-9> look_at <0,5*Ydiff,0> } light_source { <1,5,-7> color White } #declare SpringPiece= union { difference { torus { MajorR,MinorR } box { <-(MajorR+MinorR)*1.1,-1,-(MajorR+MinorR)*1.1>,<(MajorR+MinorR)*1.1,1,0> } translate x*-MajorR rotate Ang*z } difference { torus { MajorR,MinorR } box { <-(MajorR+MinorR)*1.1,-1,-(MajorR+MinorR)*1.1>,<(MajorR+MinorR)*1.1,1,0> } translate x*-MajorR rotate 180*y rotate -Ang*z translate } translate x*MajorR } union { object {SpringPiece} object {SpringPiece translate 2*y*Ydiff} object {SpringPiece translate 4*y*Ydiff} object {SpringPiece translate 6*y*Ydiff} object {SpringPiece translate 8*y*Ydiff} pigment {color Yellow} }