/*========================================================= Montagne russe su curva parametrica Metodi e Modelli Matematici Gian Marco Todesco, novembre 2007 http://archinet.uniroma3.it/mate/metodi/2007 =========================================================*/ #include "colors.inc" #include "textures.inc" #include "stones.inc" default { finish { ambient 0.4 diffuse 0.6 } } light_source { <8,10,-5> color 1 } plane { y,-1 texture { pigment { hexagon Aquamarine Orange White scale 10 } } } // cielo sky_sphere { pigment { gradient y color_map { [0.3 rgb <0.8,0.7,1.0>] [0.6 rgb <0.0,0.1,0.8>] } scale 2 translate y } rotate -30*x } // il tempo dell'animazione. #declare Clock = 44/200; // Parameter e' la coordinata curvilinea della pallina lungo la curva #declare Parameter = Clock; // // Definisco la curva Curva : [0,1] -> R3 // #macro Curva(T) #local Phi = 3*2*pi*T; #local Theta = 2*pi*T; #local R = 1.2+sin(Theta); #local Y = cos(Theta); #end // "misuro" la lunghezza della curva // (questa e' la distanza coperta dalla pallina) #declare Length = 0; #declare N = 1000; #declare I = 0; #while(I] [0.333 rgb <1,1,1>] [0.666 rgb <1,1,1>] [0.666 rgb <0.1,0.9,0.1>] } scale 2*SphereRadius translate -z*SphereRadius } finish { specular 0.4 roughness 0.01 } } rotate SphereTheta*y matrix < Tangent.x, Tangent.y, Tangent.z, Right.x,Right.y,Right.z, Up.x,Up.y,Up.z, SpherePos.x,SpherePos.y,SpherePos.z> } // posiziono la camera dietro la pallina #declare CameraPos = SpherePos - 0.6 * Tangent + 0.5*sin(Clock*2*pi)*Right + y*0.2; camera { location CameraPos right x*image_width/image_height look_at SpherePos angle 90 }