Myriad Blog 1.3.0 Friday, Oct 20th, 2017 at 09:12am 

Wednesday, Apr 23rd, 2014 at 05:03pm
Figures anticrénelées (2/3) -  Les courbes

 
Hier, nous étions parvenus à dessiner des polygones anticrénelés. Mais le but reste de dessiner des courbes. Peut-on, en créant suffisamment de segments, approximer une courbe par un polygone ?
 
I- Le test du disque
 
Afin de vérifier cela, et mettre également notre algorithme à l'épreuve, nous créons un polygone qui suit le contour d'un cercle. Un segment est créé pour chaque 5° d'angle, ce qui au final aboutit à un polygone à 72 cotés.
 
Nous lançons notre programme, et obtenons :
 

 
Le disque est correctement tracé et anticrénelé. Les pans coupés dont il est constitué ne sont pas visibles et la figure donne l'apparence d'une courbe douce.  
 
II- La transparence
 
Afin de nous permettre de mieux visualiser nos résultats, plutôt que de tracer systématiquement nos figures en noir opaque, nous introduisons un niveau de transparence.
 
Notre dessin de test, avec un nouveau polygone de 6 points, et une transparence différence pour chaque élément, donne ceci :
 

 
III- Les courbes de Bezier
 
Dans les courbes de Bezier, chaque noeud de la figure est constitué d'un point par lequel passe la figure, et de deux points de contrôle, un de chaque coté du point, définissant l'angle de la courbe lors du passage au point.
 
Nos polygones précédents peuvent être considérés comme des courbes de Bézier en ne prenant qu'un point sur trois, et en considérant les deux autres comme les points de contrôle.
 
L'algorithme de De Casteljau nous permet de diviser chaque segment en deux, et de calculer le point de Bezier intermédiaire. Répété récursivement, il permet de lisser complètement la courbe.
 
Si on ne considère qu'un point sur trois dans nos deux polygones à angles vifs, on obtient 3 points (un triangle) pour le premier, et 2 points (une ligne ultrafine, invisible) pour le second.
 

 
L'algorithme de De Casteljau nous permet de calculer les points intermédiaires sur les courbes de Bezier définissant ces figures. Voici, avec une subdivision de chaque segment en 4 :
 

 
Puis avec une subdivision en 8 :
 

 
Puis avec une subdivision et en 16 :
 

 
On ne voit presque plus les "coins" des polygones. En améliorant l'algorithme de division de De Casteljau pour continuer à diviser tant que c'est visuellement nécessaire, on obtient nos premières courbes de Bezier lisses et anticrénelées :
 

 
Le plus difficile est maintenant derrière nous. Il nous faut maintenant être capable de tracer les contours au lieu des formes pleines, et inclure ces algoritmes dans notre bibliothèque de programmation.  

(à suivre)

by Olivier Guillion


Most recent first
Oldest first

Top of page
Legal information Last update:  (c) Myriad