// Persistence of Vision Ray Tracer Scene Description File // File: ?.pov #version 3.6; // current version is 3.8 global_settings { assumed_gamma 1.0 max_trace_level 25 // radiosity {} } #declare Cameraz = camera { location <1, 0, -10> look_at <0, 0, 0> } camera {Cameraz} sky_sphere { pigment { gradient y color_map { [0.0 color rgb <1,1,1>] [0.5 color rgb <1,1,1>] [1.0 color rgb <1,1,1>] } scale 2 translate -1 } } // the above is no different than: sky_sphere {pigment {rgb 1}} // create a regular point light source light_source { 0*x // light's position (translated below) color rgb <1,1,1> // light's color translate <1, 1, -200> } light_source { 0*x // light's position (translated below) color rgb <1,1,1> // light's color translate <-100, 100, 00> } // Light in the opening of the snail shell light_source { 0*x // light's position (translated below) color rgb <1,1,1> // light's color translate <2, -2.5, 0> } //---------------------------Objects----------------------------------------------------------------- //Spiral parameters #declare Inclination = 0.01045; #declare HeightVariable = 0.105; #declare RadiusVariable = 0.0355; #declare ThicknessVariable = 0.04; //Starting position on y-axix #declare YStart = 3.9; blob { threshold 0.6 #declare ticker = 0; #while (ticker < 400) #declare Angle = 5.5 * ticker; #declare Radius = RadiusVariable * exp (Inclination*ticker); #declare DeltaY = HeightVariable * exp (Inclination*ticker); #declare Gauge = ThicknessVariable * exp (Inclination*ticker); sphere { <0, 0, 0>, 1.2*Gauge , 0.3 // This sphere produces the solid shell translate rotate <0, Angle, 0> pigment { color rgb<255/255, 160/255, 50/255> } } sphere { <0, 0, 0>, 0.9*Gauge , -1 // And this sphere is substracted and produces the inner void translate <0.9*Radius, YStart - DeltaY, 0> rotate <0, Angle, 0> pigment { color rgb<255/255, 255/255, 255/255> // solid color pigment } } // Decorations - "spikes" #if (mod(ticker, 10) = 0) // a spike is inserted every thenth element // OR #if (!mod(ticker, 10)) sphere { <0, 0, 0>, Gauge/3 , 0.5 scale <4, 1, 1> translate rotate <0, 0, 50> // This rotation produces the upper row of spikes translate rotate <0, Angle, 0> pigment { color rgb<20/255, 0/255, 0/255> // solid color pigment } } sphere { <0, 0, 0>, Gauge/3 , 0.5 scale <4, 1, 1> translate rotate <0, 0, -15> // and this rotation produces the lower row of spikes translate rotate <0, Angle, 0> pigment { color rgb<20/255, 0/255, 0/255> // solid color pigment } } #else #end // end if #declare ticker = ticker + 1; #end // end while } // end blob //Stripes blob { threshold 0.6 #declare ticker = 0; #while (ticker<396) #declare Angle = 5.5 * ticker; #declare Radius = RadiusVariable * exp(Inclination*ticker); #declare DeltaY = HeightVariable * exp(Inclination*ticker); #declare Gauge = ThicknessVariable * exp(Inclination*ticker); #declare ticker2 = 0; #while (ticker2< 10) sphere { <0, 0, 0>, 0.1*Gauge , 1 scale <1, 0.5 4> translate <0.8*Gauge, 0, 0> rotate <0, 0, -25+ticker2*10> // This rotation produces the various stripes translate rotate <0, Angle, 0> pigment { color rgb<20/255, 0/255, 0/255> } } #declare ticker2 = ticker2 + 1; #end // end inner while #declare ticker = ticker + 1; #end // end outer while } // end blob