Télécharger le fichier Maple "zippé"

Dragons et autres courbes



Ces mêmes fractales ont été tracées avec PovRay :
 
Aller voir "courbe du C"
 Aller voir "dragon"

I. Construction de courbes diverses

a. Dragons classique et moins classiques

> with(plots):
Reverse:=proc(liste) local n: n:=nops(liste): [seq(liste[n-i+1],i=1..n)] end:
dragon:= proc(R1,C1,R2,C2,n) # [R,G,B] en 6 ieme argument possible...
local k,liste,r1,c1,r2,c2,long,dep,uu, coul1;
if nargs<6 then coul1:=1,0,0 :
else coul1:=op(args[6]) fi;
dep:=evalf(exp(I*Pi*(n+4)/4)):
r1:=evalf(R1): c1:=evalf(C1*dep):r2:=evalf(R2):c2:=evalf(C2):
liste:=[0,dep]:
for k to n do
long:=nops(liste):
uu:=liste[long]:
liste:=[op(map(x->r1*x+c1,liste)),
seq(uu+r2*(liste[long-j+1]-uu)+c2,j=1..long)]
od:

liste:=map(x->[Re(x),Im(x)],liste):
PLOT(CURVES(liste),AXESSTYLE(NONE),SCALING(UNCONSTRAINED),COLOR(RGB,coul1));
end:
dragon_bis:= proc(R1,C1,R2,C2,n) # [R,G,B] en 6 ieme argument possible...
local k,liste,r1,c1,r2,c2,long,dep,uu, coul1;
if nargs<6 then coul1:=1,0,0 :
else coul1:=op(args[6]) fi;
dep:=evalf(exp(I*Pi*(n+4)/4)):
r1:=evalf(R1): c1:=evalf(C1*dep):r2:=evalf(R2):c2:=evalf(C2):
liste:=[0,dep]:
for k to n do
long:=nops(liste):
uu:=liste[long]:
liste:=[op(map(x->r1*x+c1,liste)),
seq(uu+r2*(liste[j]-uu)+c2,j=1..long)]
od:

liste:=map(x->[Re(x),Im(x)],liste):
PLOT(CURVES(liste),AXESSTYLE(NONE),SCALING(CONSTRAINED),COLOR(RGB,coul1));
end:


Dragon classique
dragon(1,0,I,0,11);
dragon(1,0,I,0.5,10,[0,0,1]);#tt:=time():time()-tt;

Voir l'image 1     Voir l'image 2

Dragon moins classique

> dragon(1,1,I,0,10);

Voir l'image

dragon feu et flammes

> display([dragon(1,exp(I*Pi/3),I,0,10,[1,0.4,0])],thickness=2);#,pointplot([[0,0],[1,0]],symbol=BOX)

Voir l'image

Dragon qui ne se recoupe pas

display(dragon(1,I*0.8,I,0,10,[0,0,1]),thickness=2) ;
#dragon(1,2*I,I,0,10,[0.8,0.6,0]);

Voir l'image

#la courbe du C ou courbe de Lévy

> dragon_bis(exp(I*Pi/4)/sqrt(2),0,exp(-I*Pi/4)/sqrt(2),0,12);

Voir l'image

#la courbe du E

> dragon_bis(exp(I*Pi/3)/sqrt(2),0,exp(I*Pi*5/3)/sqrt(2),0,14);

Voir l'image

Début  

b. Autres courbes

> with(plots):# à mettre si non chargé dans Maple.ini

fractale:= proc(R1,C1,R2,C2,n)
local k,liste,r1,c1,r2,c2,long;
r1:=evalf(R1): c1:=evalf(C1):r2:=evalf(R2):c2:=evalf(C2):
liste:=[0,1]:
for k to n do
long:=nops(liste):
liste:=[op(map(x->r1*x+c1,liste)),op(map(x->r2*x+c2,liste))]
od:
liste:=map(x->[Re(x),Im(x)],liste):
PLOT(CURVES(liste),COLOR(RGB,0.9,0.6,0.2),AXESSTYLE(NONE),SCALING(CONSTRAINED));
end:

#la même mais tracé des points dans un ordre différent
fractale_bis:= proc(R1,C1,R2,C2,n,couleur)
local k,liste,r1,c1,r2,c2,long, coul ;
if nargs()=6 then coul:=op(couleur) else coul:=0.9,0.6,0.2; fi;
r1:=evalf(R1): c1:=evalf(C1):r2:=evalf(R2):c2:=evalf(C2):
liste:=[0,1]:
for k to n do
long:=nops(liste):
liste:=[op(map(x->r1*x+c1,liste)),seq(r2*liste[long+1-j]+c2,j=1..long)]
od:
liste:=map(x->[Re(x),Im(x)],liste):
PLOT(CURVES(liste),COLOR(RGB,coul),AXESSTYLE(NONE),SCALING(CONSTRAINED));
end:


# Dragon Goff

> fractale((1-I)/2,(1+I)/4,(-1+I)/2,1,10);

# Dragon Goff 2

> fractale((1-I)/2,0,(1-I)/2,I,10);

# Un autre dragon

> fractale_bis((1+I)/2,0,(I-1)/2,-3,11);

Voir l'image

# Courbe du C (approximative)

> fractale(exp(I*Pi/4)/sqrt(2),0,exp(-I*Pi/4)/sqrt(2),1+I,12);

> fractale_bis(exp(I*Pi/4)/sqrt(2),0,exp(-I*Pi/4)/sqrt(2),1+I,12); # traits parasites

# Courbes du E (approximative)

> #fractale(exp(2*I*Pi/5)/sqrt(2),0,exp(-2*I*Pi/5)/sqrt(2),exp(I*Pi/100*73),12);

> fractale(exp(I*Pi/3)/sqrt(2),0,exp(I*Pi*5/3)/sqrt(2),exp(I*Pi/100*74),14);

# Cumulus ou BOUM !

> fractale((1+I)/2,0,exp(5*I*Pi/3)/sqrt(2),1+I,11);

> fractale_bis((1+I)/2,0,exp(5*I*Pi/3)/sqrt(2),1+I,11);

# ( Le cheval ou ) Maman caniche portant son petit

> fractale_bis(exp(I*Pi/3)/sqrt(2),0.08*I,
-exp(I*Pi*5/3)/sqrt(2),exp(31*I*Pi/32),14,[0,0,0]);

Voir l'image

# Courbe du crabe

> fractale(exp(I*Pi/6)/sqrt(2),0,exp(-I*Pi/6)/sqrt(2),exp(I*Pi*7/30),13);

> fractale_bis(exp(I*Pi/6)/sqrt(2),0,exp(-I*Pi/6)/sqrt(2),1+I,10);

# Fumée

> fractale(exp(I*Pi/10)/sqrt(2),0,exp(-I*Pi/10*3)*0.67,1+20*I,11);

> fractale_bis(exp(I*Pi/10)/sqrt(2),0,exp(-I*Pi/10*3)*0.67,1+20*I,11);

# Perruque

> fractale(exp(1*I*Pi/8)/sqrt(2),0,exp(-3*I*Pi/8)/sqrt(2),10,11);

> fractale_bis(exp(1*I*Pi/8)/sqrt(2),0,exp(-3*I*Pi/8)/sqrt(2),10,11);

Début  

II. Construction décomposée des courbes

> restart:
with(plots):# à mettre si non chargé dans Maple.ini
fractale:= proc(R1,C1,R2,C2,n)
global F1,F2 :
local k,liste,r1,c1,r2,c2,long,tamp,dep;
r1:=evalf(R1): c1:=evalf(C1):r2:=evalf(R2):c2:=evalf(C2):
dep:=evalf(exp(I*Pi*(n+3)/4)):
liste:=[0,dep]:
for k to n do
long:=nops(liste):
tamp:=r2*liste[long]+c2;
liste:=[seq(r2*liste[long-j+1]+c2-tamp,j=1..long),op(map(x->r1*x+c1-tamp,liste))]
od:
liste:=map(x->[Re(x),Im(x)],liste):
display([seq(
display([ PLOT(CURVES([liste[1],liste[2]]),COLOR(RGB,0,0,0) ),seq(
PLOT(CURVES([seq(liste[j],j=2^w+1..2^(w+1))]),COLOR(HUE,w/n) ), w=0..k)]),
k=1..n-1)],insequence=true,axes=none,scaling=constrained);
end:

fractale_bis:= proc(R1,C1,R2,C2,n)
local k,i,liste,r1,c1,r2,c2,long,dep;
r1:=evalf(R1): c1:=evalf(C1):r2:=evalf(R2):c2:=evalf(C2):
dep:=evalf(exp(I*Pi*(n+3)/4)):
liste:=[0,dep]:
for k to n do
liste:=[op(map(x->r1*x+c1,liste)),op(map(x->r2*x+c2,liste))]:
od:
liste:=map(x->[Re(x),Im(x)],liste):
display([seq(
display([ PLOT(CURVES([liste[1],liste[2]]),COLOR(RGB,0,0,0) ),seq(
PLOT(CURVES([seq(liste[j],j=2^w+1..2^(w+1))]),COLOR(HUE,w/n) ), w=0..k)]),
k=1..n-1)],insequence=true,axes=none,scaling=constrained);
end:

fractale_ter:= proc(R1,C1,R2,C2,n)
local k,i,liste,r1,c1,r2,c2,long,uu,dep;
r1:=evalf(R1): c1:=evalf(C1*dep):r2:=evalf(R2):c2:=evalf(C2):
dep:=evalf(exp(I*Pi*(n-1)/4)):
liste:=[0,dep]:
for k to n do
long:=nops(liste):
uu:=liste[long]:
liste:=[op(map(x->r1*x+c1,liste)),
seq(uu+r2*(liste[j]-uu)+c2,j=1..long)]
od: liste:=map(x->[Re(x),Im(x)],liste):
display([seq(
display([ PLOT(CURVES([liste[1],liste[2]]),COLOR(RGB,0,0,0) ),seq(
PLOT(CURVES([seq(liste[j],j=2^w+1..2^(w+1))]),COLOR(HUE,w/n) ), w=0..k)]),
k=1..n-1)],insequence=true,axes=none,scaling=constrained);
end:


#dragon classique

> fractale((1-I)/2,0,(1+I)/2,0,12);

Voir l'image

# Courbe du C

> fractale_ter((1-I)/2,0,(1+I)/2,0,14);

Voir l'image

# un autre dragon déroulé par un bout

> fractale_bis((1+I)/2,I,(I-1)/2,6*exp(17*I*Pi/24),12);

# Cumulus ou BOUM !

> fractale_bis((1+I)/2,0,exp(5*I*Pi/3)/sqrt(2),1,12);

# Maman Caniche portant son petit

> fractale_bis(exp(I*Pi/3)/sqrt(2),0.08*I,-exp(I*Pi*5/3)/sqrt(2),exp(21*I*Pi/32),12);

Voir l'image

# Fumée

fractale_bis(exp(I*Pi/10)/sqrt(2),2,exp(-I*Pi/10*3)*0.67,1+15*I,12);

# Perruque

> fractale_bis(exp(1*I*Pi/8)/sqrt(2),0,exp(-3*I*Pi/8)/sqrt(2),1,11);


Début