Voir : 
la version texte avec indentation

Coquillages




Tracé de coquillages


Voir en grand format

Voir en grand format




/*
Coquillage - équations parametriques :
x=exp(p1/k)*cos(p1)*(1+b*cos(p2))
y=exp(p1/k)*sin(p1)*(1+b*cos(p2))
z=exp(p1/k)*(1+b*sin(p2))
*/

#declare k=10; //25
#declare b=.4926839011; //5
#declare umin = -30; //-90 //endpoints in the
#declare umax = 4; //-26.7 //parametric rectangle
#declare vmin = 0;
#declare vmax = 6.3;
#declare uiter = 150; //number of steps
#declare viter = 80;
#declare iu = (umax-umin)/uiter ; //increment par pas
#declare iv = (vmax-vmin)/viter;

#macro CX(p1,p2)
exp(p1/k)*cos(p1)*(1+b*cos(p2))
#end
#macro CY(p1,p2)
exp(p1/k)*sin(p1)*(1+b*cos(p2))
#end
#macro CZ(p1,p2) exp(p1/k)*(1+b*sin(p2))
#end

//------------------------------n
camera { location < -1,1,-3.5>
look_at < -0.1,-2, 0>
}
light_source { <-2, 10,-10> color rgb 1 }
light_source { <5, 6, 0> color rgb 1 }

// ----------------------------------------
sky_sphere {
pigment {
gradient y
color_map {
[0.0 rgb <0.6,0.7,1.0>]
[0.7 rgb <0.0,0.1,0.8>]
}
}
}

// ----------------------------------------
plane { y, -2.18

texture {
pigment { granite
scale 0.1
}
finish { diffuse 0.8
ambient 0.5
}
} // fin texture
} // fin plan

union{ // méthode utilisée par Tore Nordstrand
#declare uu = umin;
#while (uu<=umax) //outer loop
#declare vv = vmin;
#while (vv<=vmax) //inner loop
//POINTS
#declare x1=CX(uu,vv); //Calculate the
#declare y1=CY(uu,vv); //four points in
#declare z1=CZ(uu,vv) ; //the rectangle defined
#declare uu=uu+iu; //by uu,uu+iu,vv,vv+iv
#declare x2=CX(uu,vv); //Uses uu and vv because
#declare y2=CY(uu,vv); //u and v are built in
#declare z2=CZ(uu,vv); //constants.
#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 ; //Calculate surface normals
#declare nx1=CX(uu,vv);//to the nine rectangles in
#declare ny1=CY(uu,vv); //the immediate neighbourhood
#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
object{
smooth_triangle{
,n5+n6+n8+n9,
,n4+n5+n7+n8,
,n1+n2+n4+n5
}
}
object{
smooth_triangle{
, n5+n6+n8+n9,
, n1+n2+n4+n5
, n2+n3+n5+n6
}
}
#declare vv = vv+iv;
#end //inner loop
#declare uu = uu+iu ;
#end //outer loop

texture{ pigment {
dents
color_map {
[ 0.1 color red 1 green 1 blue 1]
[ 0.1 color red 0.9 green 0.9 blue 0.7]
[ 0.3 color red 0.9 green 0.6 blue 0.0]
[ 0.5 color red 1 green 0.7 blue 0.7 filter 0.5]
} // color_map
scale 0.025
} //fin pigment
finish { ambient 0.3 diffuse 0.4 specular 0.2 roughness 0.01 }
} // fin texture

rotate <90,25,1>
scale <1,1,1.2>
}
Début