La méthode. |
Un peu d'aide. |
(xa+(xb-xa)/3, ya+(yb-ya)/3)
(xa+2*(xb-xa)/3, ya+2*(yb-ya)/3)
((xc+xd)*cos 60°-(yd-yc)*sin 60°, (yc+yd)*cos 60°+(xd-xc)*sin 60°)
Comment faire? |
P0,P1,P2,P3,P4 (l'ancien P1),P5,P6,P7,P8 (l'ancien P2),...,P12 (l'ancien P3)Ces points peuvent être mémorisés dans un tableau ou dans une liste chaînée plus appropriée à des insertions/suppressions.
Dessiner(a,b,n) a et b déterminent le segment sur lequel doit être dessiné le triangle aller en a si n=0 alors tracer jusqu'en b il n'y a plus de triangle à générer et on trace sinon on ne doit pas encore tracer et on va construire le niveau suivant sur les segments ac,ce,ed,db déterminer c point au tiers de ab déterminer d point au deux tiers de ab déterminer e sommet du triangle généré sur le tiers central de ab on va passer aux segments ac,ce,ed,db en indiquant le changement de niveau dessiner(a,c,n-1) on fait la même chose sur ac (premier tiers) dessiner(c,e,n-1) on fait la même chose sur ce (1er cote du triangle généré) dessiner(e,d,n-1) on fait la même chose sur ed (2ème cote du triangle généré) dessiner(d,b,n-1) on fait la même chose sur ab (dernier tiers) fsi
Notes. |
état initial: L1 = 3 * L (3 côtés de longueur L) état 1: L2 = 3 * 4 * (L/3) = L1 * 4/3 (12 côtés de longueur L/3) état 2: L3 = 3 * 4 * 4 * (L/9) = L2 * 4/3 (48 côtés de longueur L/9) ....Cette longueur tend donc vers l'infini puisque multipliée à chaque étape par 4/3>1. De plus, chacun de ses points devient un point anguleux et donc la dérivée n'y existe pas. On se trouve ainsi en présence d'une courbe de longueur infinie et 'dérivable nulle part', délimitant une surface finie (inférieure à celle du cercle circonscrit au triangle initial).
Les implémentations en Delphi. |