« Programmation objet et géométrie/Les lignes droites de canvas » : différence entre les versions

Contenu supprimé Contenu ajouté
Ligne 200 :
L'utilisation de boucles JavaScript permet de construire des polygones très complexes, comme par exemple le [[w:Flocon de von Koch|flocon de Von Koch]]. Ici on va plutôt dessiner l'[[w:Arbre de Stern-Brocot|arbre de Stern-Brocot]]. Le dessin d'un arbre se fait par récurrence: Le principe est de dessiner la branche gauche et la branche droite (des segments) puis de rajouter à leur extrémité un (sous-)arbre. Pour calculer les coordonnées des extrémités des segments, on utilise le développement en fraction continue d'une fraction:
 
Si le développement en [[w:Fraction continue|fraction continue]] est ''[a1,a2,a3,...,an]'' alors
# l'une des branches partant de cette fraction va vers la fraction ''[a1,a2,a3,...,an+1]''; on appellera ''fils'' de la fraction cette nouvelle fraction;
# l'autre branche va vers la fraction ''fille'', de développement ''[a1,a2,a3,...,an-1,2]''.
 
L'algorithme de tracé de l'arbre peut donc s'écrire
 
# On part d'une fraction, représentée par le point d'abscisse sa valeur et d'ordonnée l'inverse de son dénominateur (par convention)
# On tire un segment vers son fils;
# On tire un autre segment vers sa fille;
# On trace l'arbre du fils;
# On trace l'arbre de la fille.
 
La condition pour finir la récurrence est la taille du dénominateur: S'il est trop grand (en pratique, supérieur ou égal à 400) la fraction est proche de la [[w:Canopée|canopée]] de l'[[w:Arbre binaire|arbre]] (l'axe des abscisses) et on s'arrête.