// Persistence of Vision Ray Tracer Scene Description File // File: ?.pov // Vers: 3.5 // Desc: Basic Scene Example // Date: mm/dd/yy // Auth: ? // #version 3.5; #include "colors.inc" #include "textures.inc" #include "stones.inc" #include "golds.inc" #include "metals.inc" #include "glass_old.inc" #include "woods.inc" global_settings { assumed_gamma 1.0 ambient_light .6 } // ---------------------------------------- camera { direction 1.5*z right x*image_width/image_height location <0.0, -2.5, -30> look_at <0.0,-2.5, 0.0> angle 20 /* location <0.0, -0, -30> look_at <0.0,-1.2, 0.0> angle 15 */ } background{color rgb <.15,.15,.25>} light_source { <0, 0, 0> // light's position (translated below) color rgb <1, 1, 1> // light's color translate <-20, 50, -30> } // ---------------------------------------- plane { y, -6 pigment { color rgb <0.7,0.5,0.3> } } #declare rope_texture= texture { pigment { // (---surface color---) marble // some pattern color_map { // color map [0.1 color Sienna] [0.5 color Goldenrod] [0.7 color Tan] [0.95 color Goldenrod] } turbulence 0.5 // some turbulence scale <1,3,1>/5 // transformations } normal { // (---surface bumpiness---) marble 0.8 // some pattern (and intensity) turbulence 0.5 // some turbulence scale <1,3,1>/5 // transformations }/* */ finish { // (---surface finish---) ambient 0.2 specular 0.6 // shiny } } #declare lclock=clock+.7; #declare r0=.2; #declare D=.07; #declare y0=.5; #declare yf=.5*(1-.95*lclock); #declare rope_length=(y0-yf)*sqrt(r0*r0/(D*D)*pi*pi+1); #declare x_function = function(s) {r0*sin(s/D*pi) } #declare y_function = function(s) { s} #declare z_function = function(s) { -r0*cos(s/D*pi) } #declare q=(yf)/(2*D)*360; //spindle #declare sp_top=y0+D/4; #declare sp_bot=-D/4; union{ cylinder{sp_bot*y,sp_top*y,r0-D/2} cylinder{0,2*D*y, r0+D translate sp_top*y} cylinder{0,-2*D*y, r0+D translate sp_bot*y} texture{Brushed_Aluminum rotate z*90 scale .2} rotate q*y } //axel cylinder{(sp_top+.5)*y, (sp_bot-2.5-.8)*y,r0/4 texture {Brushed_Aluminum rotate z*90 translate 3*y scale .1 } rotate y*q } //winder #declare windery=sp_top+.5; union{ union{ box{-.1*x-.2*z,.75*x+.2*z+.05*y translate windery*y} cylinder{0,.2*y,.025 translate windery*y+.7*x} texture{T_Silver_3A} } sphere{0, .25 scale <1,.4,1> texture{T_Brass_1A} translate windery*y+.7*x+.3*y} rotate q*y } // lower the aparatus position union{ //blades #declare oneblade=union{ cylinder{0,.3*x,r0/8} box{-r0/16*z-.23*y,+r0/16*z+.23*y+.6*x translate .3*x} texture{Bronze_Texture} } #declare bladeset=union{ object{oneblade translate (sp_bot-.9)*y} object{oneblade translate (sp_bot-1.55)*y} object{oneblade translate (sp_bot-2.2)*y} } union{ object{bladeset} object{bladeset rotate y*90} object{bladeset rotate y*180} object{bladeset rotate -y*90} rotate y*q } /**/ //container /*difference{ cylinder{0,-2.5*y,1.2} cylinder{.1*y,-2.3*y,1} texture{pigment { color rgbt <1,1,1,.85> } finish{ambient .25 diffuse .55 specular .25 phong 2}} //texture{T_Old_Glass } } */ //container, cut away difference{ cylinder{-.3*y,-2.7*y,1.2} union{ cylinder{.1*y,-2.65*y,1.1} box{-2.65*y-1.5*x,.1*y+1.5*x-1.5*z translate -.2*z} } texture{T_Silver_3A} } //lid union{ cylinder{-.3*y,-.225*y,1.25} cylinder{-.3*y,-.375*y,1.099} texture{pigment { color rgb <1,1,1>/20 } finish{ambient .15 diffuse .55 specular .55 phong 20}} } //table box{-2*x-2*z,2*x+2*z-.25*y translate -2.7*y texture {T_Wood1} } cylinder{-2.8*y,-8*y,.1 texture {T_Wood1 rotate x*90 translate x*2 } translate -1.5*x-1.5*z} cylinder{-2.8*y,-8*y,.1 texture {T_Wood1 rotate x*90 translate x*2.2 } translate 1.5*x-1.5*z} cylinder{-2.8*y,-8*y,.1 texture {T_Wood1 rotate x*90 translate x*-2.1 } translate 1.5*x+1.5*z} cylinder{-2.8*y,-8*y,.1 texture {T_Wood1 rotate x*90 translate x*-1.8 } translate -1.5*x+1.5*z} //thermometer union{ difference{ union{ cylinder{-.25*y,1.5*y,.05} sphere{0,.05 scale <1,.25,1> translate -.5*y} sphere{0,.05 scale <1,2,1> translate 1.5*y} } box{-2*y-x,2*y+2*x-2*z} texture{pigment { color rgb <1,1,1> } finish{ambient .15 diffuse .55 specular .55 phong 20}} } union{ sphere{0,.04 scale <1,.25,1> translate -.4*y} cylinder{-.4*y,-.25*y,.04} cylinder{-.25*y,1.35*(.55+.45*lclock)*y,.015} pigment{color rgb <1,0,0>} finish{ambient .5 diffuse .5} } translate -.75*z-.5*x-.25*y } //water cylinder{-.4*y,-2.65*y,1.099 //texture{pigment { color rgbt <0,0,.8,.9> } finish{ambient .55 diffuse .05 specular .05}} texture { pigment { // (---surface color---) onion // some pattern color_map { // color map [0.1 color rgbt <0,0,.8,.7>] [0.5 color rgbt <1,1,1.2,.95>] [0.75 color rgbt <1,1,1,.8>] [0.9 color rgbt <1,1,1,1>] } turbulence 0.4-.2*cos(lclock*pi) // some turbulence scale <1,1,1>/5 // transformations } finish { // (---surface finish---) ambient 0.4 specular 0.2 // shiny } translate y*2.3 scale 1+.1*sin(lclock*pi)+.5*y } texture{pigment {color rgbt <.0,.0,1,.85>} } rotate q*y } translate -.8*y } #declare prad=.2; //one set of dropers #declare s_start=0; #declare s_end=yf; #declare s_nseg=2000*yf/y0; #declare cyl_width=D/2; #declare s_count=1; #declare s_ds=(s_end-s_start)/(s_nseg); #declare temp_v1=; #declare lcurve=0; #declare curve_obj= union{ #while (s_count <= s_nseg) #declare s_this=s_start+s_count*s_ds; #declare temp_v2=; #declare dv=temp_v2-temp_v1; #declare dl=vlength(dv); #declare lcurve=lcurve+dl; #declare c=vcross(dl*y,dv); #declare cL=vlength(c); #declare nc=c/cL; #declare rot_angle=acos(vdot(dl*y,dv)/(dl*dl))*180/pi; cylinder{0,dl*y*1.0,cyl_width texture { rope_texture rotate z*90 translate y*(lcurve) } rotate rot_angle*nc translate temp_v1 } #declare temp_v1=temp_v2; #declare s_count=s_count+1; #end } object{ curve_obj rotate y*q} //pulley #declare pulley_center=3*x+y*(y0/2-prad)-z*(r0+D/2); difference{ cylinder{-1.8*D*z,1.8*D*z,prad+D/2} torus{prad,D rotate x*90} texture{Brushed_Aluminum rotate z*0 scale .5} rotate q*r0/prad*z translate pulley_center } #declare coil_end=y_function(yf)*y-r0*z; #declare pulley_top=pulley_center+prad*y; #declare dl_seg1=pulley_top-coil_end; #declare ndl_seg1=vlength(dl_seg1); #declare rot_angle=degrees(acos(vdot(x,dl_seg1)/ndl_seg1)); #declare rot_axis=vcross(x,dl_seg1); #declare rot_axis=rot_axis/vlength(rot_axis); cylinder{0,ndl_seg1*x,D/2 texture { rope_texture translate x*rope_length } rotate rot_angle*rot_axis translate coil_end } cylinder{0,(.5+rope_length)*x,D/2 texture { rope_texture translate x*(rope_length+ndl_seg1+pi/2*prad) } rotate -z*90 translate pulley_center+prad*x } cone{0,.3,-.75*y,.5 translate pulley_center+prad*x texture{T_Stone31 scale .6} translate -(.5+rope_length)*y } //pulley support cylinder{pulley_center,1.4*x-3.65*y,.1 texture{T_Silver_3A} } //second set of dropers union{ #declare s_start=0; #declare s_end=yf; #declare s_nseg=2000*yf/y0; #declare cyl_width=D/2; #declare s_count=1; #declare s_ds=(s_end-s_start)/(s_nseg); #declare temp_v1=; #declare lcurve=0; #declare curve_obj= union{ #while (s_count <= s_nseg) #declare s_this=s_start+s_count*s_ds; #declare temp_v2=; #declare dv=temp_v2-temp_v1; #declare dl=vlength(dv); #declare lcurve=lcurve+dl; #declare c=vcross(dl*y,dv); #declare cL=vlength(c); #declare nc=c/cL; #declare rot_angle=acos(vdot(dl*y,dv)/(dl*dl))*180/pi; cylinder{0,dl*y*1.0,cyl_width texture { rope_texture rotate y*180 rotate z*90 translate y*(lcurve) } rotate rot_angle*nc translate temp_v1 } #declare temp_v1=temp_v2; #declare s_count=s_count+1; #end } object{ curve_obj rotate y*q} //pulley #declare pulley_center=3*x+y*(y0/2-prad)-z*(r0+D/2); difference{ cylinder{-1.8*D*z,1.8*D*z,prad+D/2} torus{prad,D rotate x*90} texture{Brushed_Aluminum rotate z*0 scale .5} rotate q*r0/prad*z translate pulley_center } #declare coil_end=y_function(yf)*y-r0*z; #declare pulley_top=pulley_center+prad*y; #declare dl_seg1=pulley_top-coil_end; #declare ndl_seg1=vlength(dl_seg1); #declare rot_angle=degrees(acos(vdot(x,dl_seg1)/ndl_seg1)); #declare rot_axis=vcross(x,dl_seg1); #declare rot_axis=rot_axis/vlength(rot_axis); cylinder{0,ndl_seg1*x,D/2 texture { rope_texture rotate y*180 translate x*rope_length } rotate rot_angle*rot_axis translate coil_end } cylinder{0,(.5+rope_length)*x,D/2 texture { rope_texture rotate y*180 translate x*(rope_length+ndl_seg1+pi/2*prad) } rotate -z*90 translate pulley_center+prad*x } cone{0,.3,-.75*y,.5 translate pulley_center+prad*x texture{T_Stone31 translate 5 scale .6} translate -(.5+rope_length)*y } cylinder{pulley_center,1.4*x-3.65*y,.1 texture{T_Silver_3A} } rotate y*180 }