Bonjour,
je fais appel à vous car je suis bloqué:
Voici mon énoncé:
On s'intéresse aux transformations affines du plan, c'est à dire aux fonctions f qui transforme chaque point du plan M(x,y) en un unique point M(x',y') de la manière suivante:
f: M(x,y) --> M'(x',y') où x'=ax+by+u et y'=cx+dy+v avec a,b,c,d,u,v réels.
On notera alors: (x',y') = [a,b;c,d][x;y]+[u;v] ou encore X'=AX+U
Je dois donc faire un programme qui construit une fougère, cela grâce à 4 transformations.
F1 telle que A=[0,0;0,0.16] et U= [0;0]
F2 telle que A=[0.85,0.04;-0.04,0.85] et U= [0;1.6]
F3 telle que A=[0.2,-0.26; 0.23,0.22] et U= [0;1.6]
F4 telle que A=[-0.15,0.28;0.26,0.24] et U= [0;0.44]
On suppose qu'un point a: 1% de chance d'être transformé par F1, 85% de chance d'être transformé par F2, 7% de chance d'être transformé par F3 et également 7% de chance d'être transformé par F4.
En respectant les probabilités précédentes, je dois proposer un algorithme qui permettrait de simuler la construction d'une fougère.
J'ai décidé de faire mon algorithme dans Scilab, voici le début:
X=input("X:")
Y=input("Y:")
N=input("Nombres de boucles:")
A=[0,0;0,0.16]
B=[0;0]
C=[0.85,0.04;-0.04,0.85]
D=[0;1.6]
E=[0.2,-0.26;0.23,0.22]
F=[0;1.6]
G=[-0.15,0.28;0.26,0.24]
H=[0;0.44]
I=[X;Y]
a=I(1,1)
b=I(2,1)
plot2d(a,b,style=-1)
while N>0
R=round(rand(1)*100)
if R>0 & R<=1 then
I=A*I+B
x=I(1,1)
y=I(2,1)
plot2d(x,y,style=-1)
N=N-1
end
if R>1 & R<=86 then
I=C*I+D
x=I(1,1)
y=I(2,1)
plot2d(x,y,style=-1)
N=N-1
end
if R>86 & R<=93 then
I=E*I+F
x=I(1,1)
y=I(2,1)
plot2d(x,y,style=-1)
N=N-1
end
if R>93 & R<=100 then
I=G*I+H
x=I(1,1)
y=I(2,1)
plot2d(x,y,style=-1)
N=N-1
end
end
Mais là je bloque, comment est ce que je peux faire afin de continuer la construction de ma fougère en sachant qu'une fougère est une fractale et que c'est donc le même algorithme qui doit se reproduire à chaque fois...
Merci d'avance!
-----