novice avec asymptote et nouveau sur ce forum.
Me disant qu'il n'y a qu'en pratiquant qu'on progresse, j'ai essayé de faire un script pour dessiner le flocon de Van Koch.
Le voici :
Code : Tout sélectionner
// Flocon de Van Koch avec Asymptote
//Taille de l'image
size(10cm,0);
//Nombre d'itérations
int iteration;
iteration=5;
//Nombre de sommets
int n;
n=3;
//Définition des sommets du triangle initial
pair[] pA = {(0,0),
(1,0),
(1/2,sqrt(3)/2)};
//Tracé du cercle circonscrit
pair I,O;
I=((pA[0]+pA[1])/2);
O=((2*I+pA[2])/3);
draw(circle(O,2*sqrt(3)/6));
//Calcul du périmètre et calcul de l'aire initiaux
real perimetre;
perimetre = 3;
real aire;
aire = sqrt(3)/4;
//iteration
for (int k=1; k<=iteration; ++k) {
//Initialisation du nouveau pA
pair[] pD=new pair[4*n];
for (int i=0; i<=n-1; ++i) {
if (i<n-1)
{pD[4*i+0] = pA[i];
pD[4*i+1] = (2*pA[i]+pA[i+1])/3;
pD[4*i+2] = rotate(-60,(2*pA[i]+pA[i+1])/3)*((pA[i]+2*pA[i+1])/3);
pD[4*i+3] = (pA[i]+2*pA[i+1])/3;
}
else
{pD[4*i+0] = pA[i];
pD[4*i+1] = (2*pA[i]+pA[0])/3;
pD[4*i+2] = rotate(-60,(2*pA[i]+pA[0])/3)*((pA[i]+2*pA[0])/3);
pD[4*i+3] = (pA[i]+2*pA[0])/3;
}
}
pA=pD;
//Nouveau nombres de sommets
n = 4*n;
//Calcul du périmètre
perimetre = perimetre*(1+1/3);
}
//Tracé des triangles
for (int i=0; i<=n-1; ++i) {
if (i<n-1)
{draw(pA[i]--pA[i+1]);
}
else {draw(pA[i]--pA[0]);
}
}
//Affichage du périmètre
label("p\'erim\`etre : ", (0.5,-0.35),W);
label(string(perimetre), (0.5,-0.35),E);
débutant, je suis bien sur interressé par toute les remarques ou suggestion qu'on pourra me faire.
Par ailleur le script marche bien et est rapide pour iteration = 6.
A iteration = 8, il est déjà beaucoup plus long et à partir de iteration=9, j'ai l'impression que l'ordi tourne en rond.
A quoi cela peut-il être du a votre avis ?
Maurice