// 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 ,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> } */