///////////////////////////////////////////////////////////////////// // Shadow Arm ///////////////////////////////////////////////////////////////////// // // Usage: // // #declare SA_X = -1 // #declare SA_Y = 1 // #declare SA_Z = 1 // // #declare SA_CurveX = 0 // #declare SA_CurveY = 0 // #declare SA_CurveZ = 30 // #declare SA_Length = 15 // #declare SA_Radius1 = 1.75 // #declare SA_Radius2 = 0.5 // // #include "shadowarm.inc" // #ifndef (SA_Rotate1) #declare SA_Rotate1 = <0, 0, 0> #end #ifndef (SA_Rotate2) #declare SA_Rotate2 = <0, 0, 0> #end #ifndef (SA_Rotate3) #declare SA_Rotate3 = <0, 0, 0> #end #ifndef (SA_Translate1) #declare SA_Translate1= <0, 0, 0> #end #ifndef (SA_Translate2) #declare SA_Translate2= <0, 0, 0> #end #ifndef (SA_Translate3) #declare SA_Translate3= <0, 0, 0> #end #declare ny = 0 #while (ny < SA_Length) #declare frac = (ny / SA_Length) #declare fradius = SA_Radius1 + ((ny / SA_Length) * (SA_Radius2 - SA_Radius1)) #declare curvex = -(SA_CurveX * frac) #declare curvey = -(SA_CurveY * frac) #declare curvez = -(SA_CurveZ * frac) cylinder { <0, -.15, 0> <0, 1.15, 0> 1 1 scale rotate translate <0, ny, 0> rotate rotate SA_Rotate1 translate SA_Translate1 rotate SA_Rotate2 translate SA_Translate2 rotate SA_Rotate3 translate SA_Translate3 } #declare ny = ny + 1 #end