#include "colors.inc" #include "woods.inc" // #version unofficial MegaPov 0.6; camera { // location <0, 6, -0.5> location <0, 1, -6> direction <0, 0, 1> look_at <0, 0, 0> } light_source {<50, 100, -150> rgb 2 } background {rgb 0.5} #declare Amplitude= 1; #declare Period= 4; // Floor plane { y, -0.5 pigment { Khaki } finish { ambient 0.5 diffuse 0.5 } } #include "spline.mcr" #macro create_undul (Cycles, Amplitude, Period) #local AA= array[4*Cycles] #local Count= 0; #while (Count < Cycles*4) #local AA[Count] = ; #local AA[Count+1]= <(1+Count)*Period/4, Amplitude/2, 0>; #local AA[Count+2]= <(2+Count)*Period/4, 0, 0>; #local AA[Count+3]= <(3+Count)*Period/4, -Amplitude/2, 0>; #declare Count= Count+4; #end //while create_spline ( AA, create_default_spline) #end // create_undul macro #declare ObjectSpline = create_undul (3, Amplitude, Period) #declare Strip= union { torus_pipe_spline (ObjectSpline, spline_steps (/*120*/60) // <<<< change this value. + spline_radius (0.12/6)) translate -4*x scale <1,1,10> pigment { Pink } } // place all my strips union { #local Strip_count= 5; #local loop= 0; #while (loop < Strip_count) object { Strip rotate loop*x*180 translate z*loop*0.5 } #declare loop= loop+1; #end //while translate -z*Strip_count/4 // restore centering } // end of union of all strips #declare Stick= cylinder { -1.5*z, 1.5*z, 0.48 pigment { LimeGreen } } // place all my sticks union { #local Stick_count= 4; #local loop= 0; #while (loop < Stick_count) object { Stick translate (2*loop+1)*x*Period/4 } #declare loop= loop+1; #end //while translate -x* (Stick_count*Period)/4 } /* object { Stick translate -3*x*Period/4 } object { Stick translate x*Period/4 } object { Stick translate -x*Period/4 } object { Stick translate x*3*Period/4 } */