C'est ainsi que j'ai entrepris de réaliser le flocon de Van Koch. Mon code fonctionne presque, mais il y a néanmoins un problème que je ne parviens pas à résoudre tout seul. Lorsque n=0 ou n=1, tout va bien, mais dès que n>=2, il y a un problème que je ne comprends pas. Voici mon code:
Code : Tout sélectionner
unitsize(10cm);
pair A,B,C,P,Q;
A=(0,0);
B=(1,0);
C=rotate(60)*B;
int n=2;
picture Koch(int n, pair P, pair Q) {
picture pic;
draw(pic,P--Q);
if(n == 0) return pic;
draw(pic,P--Q,white);
picture subpic=Koch(n-1,P,Q);
add(pic,shift(P)*scale(1/3)*shift(-P)*subpic);
add(pic,shift((1/3)*(Q-P))*shift(P)*rotate(60)*scale(1/3)*shift(-P)*subpic);
add(pic,shift((2/3)*(Q-P))*shift(P)*rotate(120)*scale(1/3)*shift(-P)*subpic);
add(pic,shift((2/3)*(Q-P))*shift(P)*scale(1/3)*shift(-P)*subpic);
return pic;
}
add(Koch(n,B,A));
add(Koch(n,A,C));
add(Koch(n,C,B));