/* Ellipsoïde astroïdale - Equations parametriques : x = pow(a*cos(uu)*cos(vv),3) y = pow(b*sin(uu)*cos(vv),3) z = pow(c*sin(vv),3) */ #include "colors.inc" #include "woods.inc" #declare umin = -pi; #declare umax = pi; #declare vmin = -pi; #declare vmax = pi; #declare uiter = 40; #declare viter = 40; #declare iu = (umax-umin)/uiter ; #declare iv = (vmax-vmin)/viter; #macro CX(uu,vv) pow(cos(uu)*cos(vv),3) #end #macro CY(uu,vv) pow(sin(uu)*cos(vv),3) #end #macro CZ(uu,vv) pow(sin(vv),3) #end camera { location < -0.3,0.16,-2.> look_at < 0,-0.7, 0> } light_source { <-5, 4,-5> color White*0.9 } light_source { <5,3, -2> color rgb 1 shadowless} // ---------------------------------------- background { rgb <1,0.8,0>*0.95} // ---------------------------------------- // support en plexiglass #declare I_Glass = interior{ ior 1.51 caustics 2 fade_distance 1.5 fade_power 0.8 } #declare T_Glass = texture { pigment { color red 0.95 green 0.95 blue 1.0 filter 0.95 } finish { ambient 0.0 diffuse 0.0 reflection 0.05 phong 0.3 phong_size 90 } } plane { y,-2.3 texture {T_Wood10 rotate <0,90,0> translate <0,0,-2> } clipped_by{box {<-10,-2.6,-5>,<9,-2.,4>} } translate <-5,0,0> } cylinder { <0,-2.3,0>,<0,-2.1,0>,0.6 texture { T_Glass} interior { I_Glass} translate <0,0,1> } // fin box union{ // methode de Tore Nordstrand #declare uu = umin; #while (uu<=umax) //boucle 1 #declare vv = vmin; #while (vv<=vmax) //boucle 2 //POINTS #declare x1=CX(uu,vv); #declare y1=CY(uu,vv); #declare z1=CZ(uu,vv) ; #declare uu=uu+iu; #declare x2=CX(uu,vv); #declare y2=CY(uu,vv); #declare z2=CZ(uu,vv); #declare vv=vv+iv ; #declare x3=CX(uu,vv); #declare y3=CY(uu,vv); #declare z3=CZ(uu,vv); #declare uu=uu-iu ; #declare x4=CX(uu,vv); #declare y4=CY(uu,vv); #declare z4=CZ(uu,vv) ; #declare vv=vv-iv; //NORMALS #declare uu=uu+2*iu ; #declare nx1=CX(uu,vv); #declare ny1=CY(uu,vv); #declare nz1=CZ(uu,vv); #declare uu=uu-2*iu ; #declare vv=vv+2*iv; #declare nx2=CX(uu,vv) ; #declare ny2=CY(uu,vv) ; #declare nz2=CZ(uu,vv) ; #declare vv=vv-2*iv ; #declare uu=uu-iu ; #declare nx3=CX(uu,vv); #declare ny3=CY(uu,vv); #declare nz3=CZ(uu,vv); #declare uu=uu+iu; #declare vv=vv-iv ; #declare nx4=CX(uu,vv); #declare ny4=CY(uu,vv); #declare nz4=CZ(uu,vv); #declare vv=vv+iv; #declare n1=vcross(,); #declare n2=vcross(,); #declare n3=vcross(,); #declare n4=vcross(,); #declare n5=vcross(,); #declare n6=vcross(,) ; #declare n7=vcross(,); #declare n8=vcross(,) ; #declare n9=vcross(,); //TRIANGLES smooth_triangle{ ,n5+n6+n8+n9, ,n4+n5+n7+n8, ,n1+n2+n4+n5 } smooth_triangle{ , n5+n6+n8+n9, , n1+n2+n4+n5 , n2+n3+n5+n6 } #declare vv = vv+iv; #end // fin boucle 2 #declare uu = uu+iu ; #end //fin boucle 1 texture{ pigment { dents color_map { [ 0.1 color red 0.95 green 1 blue 0.95] [ 0.1 color red 0.7 green 1 blue 0.6] [ 0.4 color red 0.3 green 0.8 blue 0.5] [ 0.5 color red 0.2 green 0.7 blue 0.7 filter 0.8] } // color_map scale 0.05 } //fin pigment finish { ambient 0.45 diffuse 0.2 specular 0.7 roughness 0.01 } } // fin texture scale 1.2 rotate <0,65,0> translate <0,-1,1> }