#include "colors.inc" /* MODE D'EMPLOI : - choisissez un type de courbe (1 = linear, 2 = quadratic, 3 = cubic, 4 = bezier) - indiquez le nombre de points de la courbe (veillez à ce que ce soit un multiple de 4 pour une courbe de bezier), sans dépasser 20. - placez le nombre adéquat de points dans l'array Tableau_Points. Veillez à utiliser des valeurs comprises entre <0,0> et <50,50>. - enfin, si ça débloque (rupture de surfaces,..), mettez Sturm_Switch sur "on" */ #declare Type_de_Courbe = 4; #declare Nombre_Points = 4; #declare Tableau_Points = array[Nombre_Points]{ // <12,40>,<08,30>,<19,25>,<22,15>,<15,05>,<00,00> //demo 1, linéaire 6 points // <35,40>,<08,38>,<09,25>,<22,15>,<15,05>,<00,00> //demo 2, quadratique 6 points // <35,30>,<08,38>,<05,30>,<22,15>,<08,00>,<30,00> //demo 3, cubique 6 points <05,40>,<10,20>,<30,10>,<05,00> //demo 4, bezier 4 points // <05,40>,<20,25>,<30,10>,<05,00> //demo 5, bezier 4 points } #declare Sturm_Switch = on; //==================================================================================== //==================================================================================== // #declare ColArray = array[20]{Red,Green,Blue,Yellow,Cyan,Magenta,Black,Aquamarine,BlueViolet, Brown,CadetBlue,Coral,CornflowerBlue,DarkGreen,DarkOliveGreen,DarkOrchid,DarkSlateBlue,DarkSlateGray,DarkTurquoise,MediumForestGreen} //la lathe, en vert lathe { #switch (Type_de_Courbe) //choix du type de courbe #case (1) linear_spline #break #case (2) quadratic_spline #break #case (3) cubic_spline #break #case (4) bezier_spline #end Nombre_Points #declare Boucle=0; #while (Boucle < Nombre_Points) ,Tableau_Points[Boucle] //placement des points de contrôle #declare Boucle=Boucle+1; #end sturm Sturm_Switch pigment {YellowGreen} finish {phong .9} } //représenter les points de contrôle union { #declare Boucle=0; #while (Boucle < Nombre_Points) sphere {<1,1,0>*Tableau_Points[Boucle],1 pigment {ColArray[Boucle]} finish {ambient 1 diffuse 0}} #declare Boucle=Boucle+1; #end no_shadow rotate y*-90 translate x*5 } //représenter les tangentes, en cas de bezier_spline #if (Type_de_Courbe = 4) union { #declare Boucle=0; #while (Boucle < Nombre_Points) cylinder {<1,1,0>*Tableau_Points[Boucle],<1,1,0>*Tableau_Points[Boucle+1],.5 pigment {ColArray[Boucle]} finish {ambient 1 diffuse 0}} cylinder {<1,1,0>*Tableau_Points[Boucle+3],<1,1,0>*Tableau_Points[Boucle+2],.5 pigment {ColArray[Boucle+3]} finish {ambient 1 diffuse 0}} #declare Boucle=Boucle+4; #end rotate y*-90 } #else #end //l'axe Y cylinder {y*-80,y*80,.5 pigment {OrangeRed}} //caméra orthographique, lumières et fond camera {location <100,25,25> direction z*1.8 look_at <0,25,25> orthographic} light_source {<400,500,300> White*1.5} light_source {<400,-500,300> White*1 shadowless} background {color Gray}