Voir : 
la version texte avec indentation

Courbe du C (Courbe de Lévy )





Ces courbes ont été aussi construites avec Maple : Aller voir

Tracés de la courbe du C et deux autres courbes


Courbe du C (7)

Courbe du C (9)

Courbe du C (137)

Courbe Triangle (12)

Courbe Rectangle (9)


// Programme développé pour la courbe du C
// donne aussi d'autres fractales



#include "colors.inc"
#include "metals.inc"

//-------------- n ITERATIONS---------------


camera { location <0.5,0.5,-1.6> look_at<0.5,0.5,0>}
light_source { <-3,3,-300> color White }
light_source { <2,3,-100> color Yellow}

background { rgb<1,0.95,0.85>*1 } //<0.,0.5,0.95>*1.0



#macro fractale(r1,r2,teta1,teta2, n)
#local s1x= r1*cos(teta1) ;
#local s1y= r1*sin(teta1) ;
#local s2x= r2*cos(teta2) ;
#local s2y= r2*sin(teta2) ;

#local tab = array [pow(2,n)+1] ;
#declare tab[0]=<0,0,0>;
#declare tab[1]=<1,0,0>;
#declare tab[2]=<1,0,0>;
//---------------- macros -------------------
#macro sim(a,b,e,f,g) // similitude appliquée à

#end

//-------------------------------------------

#declare be=1;
#while(be #declare bi=0; // donc caméra, lumières fixes pour tout n
#while (bi #declare centre= tab[pow(2,be)-1];
#declare temp=tab[bi]-centre;
// similitude s2 puis translation trans2 à la branche d'ordre be
#declare tab[pow(2,be)+bi]= centre +(sim(s2x,s2y,temp.x,temp.y,temp.z));
#declare bi=bi+1;
#end // fin boucle (2)

#declare bi=0;
#while (bi // similitude s1 à la branche d'ordre be
#declare temp=tab[bi];
#declare tab[bi]=sim(s1x,s1y,temp.x,temp.y,temp.z);
#declare bi=bi+1;
#end // fin boucle (3)
#declare be=be+1;
#end // fin boucle (1)
//-------------------------------------------

#declare r=0.3/pow(1.35,n) ;
#declare cp=0;
union { //union (1)
union {
#while(cp #if ( vlength(tab[cp]-tab[cp+1])!= 0 )
sphere {tab[cp] ,r}
cylinder { tab[cp],tab[cp+1] ,r}
#end
#declare cp=cp+1;
#end
sphere {tab[pow(2,n)-1] ,r}
texture {T_Copper_3B}
}

sphere {0 ,r*1.1 pigment {Red} }
sphere {<1,0,0> ,r*1.1 pigment {Blue} }
} //fin union (1)
#end //end macro




//--------------QUELQUES APPLICATIONS---------------
// en prenant teta1 = pi*a, teta2 = -pi*a avec a<1, on obtient diverses fractales
// pour a voisin de 0.3 , on obtient un E ... à peu près

/* */ // ----------- courbe du C ---------------
fractale(1/sqrt(2),1/sqrt(2),pi/4,-pi/4,11) // n impair est plus esthétique



/* // courbe du E
object {fractale(1/sqrt(2),1/sqrt(2),pi*0.32,-pi*0.32,16)
scale 0.7
translate <0.1,0.2,0> }
*/

/* // courbe formée de carrés parcourus plusieurs fois
#declare p=12 ;
object {fractale(1,1,pi/2,-pi/2,p)s
scale 1.5/p
translate <0.3,0.3,0> }
*/

/* // courbe inscrite dans un rectangle
#declare p=9 ;
object {fractale(0.709,0.709,pi/2,-pi/2,p)
scale 10/(p+10)
translate <0.3,0.3,0> }
*/

/* // à peu près la même que la précédente
#declare p=10 ;
object { fractale(1/sqrt(2),1/sqrt(2),pi/2,-pi/2,p)
scale 10/(p+10)
translate <0.3,0.3,0> }
*/

/*
#declare p=10 ;
object { fractale(1/sqrt(2),1/sqrt(2),3*pi/4,pi/4,p)
scale 10/(p+10)
translate <0.3,0.3,0> }
*/

/* // allure d'un triangle
#declare p=12 ;
#declare a=1.5;
object { fractale(sin(pi*a/2),cos(pi*a/2),pi*a/2,-pi*(1-a)/2,p)
scale 8/(p+10)
translate <0.3,0.5,0> }
*/


Début