#include "colors.inc" /* Pov3 Parametric equation - Seashell. Not completely debugged. */ #version 3.0 global_settings { assumed_gamma 1.0 } background{color Aquamarine} #declare net = 0 #declare counter = 1 #declare a =0.2 #declare b =1.0 #declare c =0.1 #declare n =2 #declare vmin =0.1 //endpoints in the (width) #declare vmax =2*pi //parametric rectangle #declare umin =0 #declare umax =2*pi #declare uiter =30 //number of steps (lengthwise) #declare viter =60 //across #declare iu = (umax-umin)/uiter //increment per step #declare iv = (vmax-vmin)/viter /* #if (net) #declare vmax = vmax-iv #end */ union{ #declare vv = vmin #while (vv<=vmax) //out loop #declare uu = umin #while (uu<=umax) //inn loop //POINTS #declare x1=a*(1-vv/(2*pi))*cos(n*vv)*(1+cos(uu))+c*cos(n*vv) //Calculate the #declare y1=a*(1-vv/(2*pi))*sin(n*vv)*(1+cos(uu))+c*sin(n*vv) //four points in #declare z1=b*vv/(2*pi)+a*(1-vv/(2*pi))*sin(uu) //the rectangle defined #declare uu=uu+iu //by uu,uu+iu,vv,vv+iv #declare x2=a*(1-vv/(2*pi))*cos(n*vv)*(1+cos(uu))+c*cos(n*vv) //Uses uu and vv because #declare y2=a*(1-vv/(2*pi))*sin(n*vv)*(1+cos(uu))+c*sin(n*vv) //u and v are built in #declare z2=b*vv/(2*pi)+a*(1-vv/(2*pi))*sin(uu) //constants. #declare vv=vv+iv #declare x3=a*(1-vv/(2*pi))*cos(n*vv)*(1+cos(uu))+c*cos(n*vv) #declare y3=a*(1-vv/(2*pi))*sin(n*vv)*(1+cos(uu))+c*sin(n*vv) #declare z3=b*vv/(2*pi)+a*(1-vv/(2*pi))*sin(uu) #declare uu=uu-iu #declare x4=a*(1-vv/(2*pi))*cos(n*vv)*(1+cos(uu))+c*cos(n*vv) #declare y4=a*(1-vv/(2*pi))*sin(n*vv)*(1+cos(uu))+c*sin(n*vv) #declare z4=b*vv/(2*pi)+a*(1-vv/(2*pi))*sin(uu) #declare vv=vv-iv #if (net) #else //NORMALS used for smoothing triangles #declare vv=vv-iv //Calculate surface normals #declare nx1=a*(1-vv/(2*pi))*cos(n*vv)*(1+cos(uu))+c*cos(n*vv) //to the nine rectangles in #declare ny1=a*(1-vv/(2*pi))*sin(n*vv)*(1+cos(uu))+c*sin(n*vv) //the immediate neighbourhood #declare nz1=b*vv/(2*pi)+a*(1-vv/(2*pi))*sin(uu) #declare uu=uu+iu #declare nx2=a*(1-vv/(2*pi))*cos(n*vv)*(1+cos(uu))+c*cos(n*vv) #declare ny2=a*(1-vv/(2*pi))*sin(n*vv)*(1+cos(uu))+c*sin(n*vv) #declare nz2=b*vv/(2*pi)+a*(1-vv/(2*pi))*sin(uu) #declare uu=uu+iu #declare vv=vv+iv #declare nx3=a*(1-vv/(2*pi))*cos(n*vv)*(1+cos(uu))+c*cos(n*vv) #declare ny3=a*(1-vv/(2*pi))*sin(n*vv)*(1+cos(uu))+c*sin(n*vv) #declare nz3=b*vv/(2*pi)+a*(1-vv/(2*pi))*sin(uu) #declare vv=vv+iv #declare nx4=a*(1-vv/(2*pi))*cos(n*vv)*(1+cos(uu))+c*cos(n*vv) #declare ny4=a*(1-vv/(2*pi))*sin(n*vv)*(1+cos(uu))+c*sin(n*vv) #declare nz4=b*vv/(2*pi)+a*(1-vv/(2*pi))*sin(uu) #declare vv=vv+iv #declare uu=uu-iu #declare nx5=a*(1-vv/(2*pi))*cos(n*vv)*(1+cos(uu))+c*cos(n*vv) #declare ny5=a*(1-vv/(2*pi))*sin(n*vv)*(1+cos(uu))+c*sin(n*vv) #declare nz5=b*vv/(2*pi)+a*(1-vv/(2*pi))*sin(uu) #declare uu=uu-iu #declare nx6=a*(1-vv/(2*pi))*cos(n*vv)*(1+cos(uu))+c*cos(n*vv) #declare ny6=a*(1-vv/(2*pi))*sin(n*vv)*(1+cos(uu))+c*sin(n*vv) #declare nz6=b*vv/(2*pi)+a*(1-vv/(2*pi))*sin(uu) #declare uu=uu-iu #declare vv=vv-iv #declare nx7=a*(1-vv/(2*pi))*cos(n*vv)*(1+cos(uu))+c*cos(n*vv) #declare ny7=a*(1-vv/(2*pi))*sin(n*vv)*(1+cos(uu))+c*sin(n*vv) #declare nz7=b*vv/(2*pi)+a*(1-vv/(2*pi))*sin(uu) #declare vv=vv-iv #declare nx8=a*(1-vv/(2*pi))*cos(n*vv)*(1+cos(uu))+c*cos(n*vv) #declare ny8=a*(1-vv/(2*pi))*sin(n*vv)*(1+cos(uu))+c*sin(n*vv) #declare nz8=b*vv/(2*pi)+a*(1-vv/(2*pi))*sin(uu) #declare uu=uu+iu #declare n1=vcross(,) #declare n2=vcross(,) #declare n3=vcross(,) #declare n4=vcross(,) #declare normal1=n1+n2+n3+n4 #declare n1=vcross(,) #declare n2=vcross(,) #declare n3=vcross(,) #declare n4=vcross(,) #declare normal2=n1+n2+n3+n4 #declare n1=vcross(,) #declare n2=vcross(,) #declare n3=vcross(,) #declare n4=vcross(,) #declare normal3=n1+n2+n3+n4 #declare n1=vcross(,) #declare n2=vcross(,) #declare n3=vcross(,) #declare n4=vcross(,) #declare normal4=n1+n2+n3+n4 #end //if #if (net) //CYLINDERS object{cylinder{,,0.013} texture{pigment {color Red} finish {ambient 0.2 specular 0.7 roughness 0.05 } } } object{cylinder{,,0.013} texture{pigment {color Red} finish {ambient 0.2 specular 0.7 roughness 0.05 } } } object{cylinder{,,0.013} texture{pigment {color Green} finish {ambient 0.2 specular 0.7 roughness 0.05 } } } #else //TRIANGLES object{smooth_triangle{,normal1, ,normal2, ,normal3} texture{pigment {onion color_map{[0 color Coral] [0.4 color Coral] [0.5 color SeaGreen] [0.6 color Coral] [1 color Coral] } } finish {ambient 0.6 specular 0.7 roughness 0.05 } scale 0.1 } } object{smooth_triangle{, normal1, , normal3, , normal4} texture{pigment {onion color_map{[0 color Coral] [0.4 color Coral] [0.5 color SeaGreen] [0.6 color Coral] [1 color Coral] } } finish {ambient 0.6 specular 0.7 roughness 0.05 } scale 0.1 } } #end //object if #declare uu = uu+iu #end //inloop #declare vv = vv+iv #debug concat("Looping on ",str(counter,0,-1)," of ",str(viter,0,-1),"\n") #declare counter = counter + 1 #end //outloop rotate <-90,0,0> //This is just changing the rotate <0,90,0> //coordinate system. scale 12 } //Lights, camera, action camera { location < 15, 9,-15> direction 1*z look_at < 0, 4, 0> } light_source { <-40, 30,-19> color rgb 1 } light_source { <23, 20, -15> color rgb 1 } //object {box{-20,20 inverse}pigment{color rgb 0.8}}