Texel
OpenGL | Index | Contact

Lissage des trajectoires avec Catmull



Il existe plusieurs méthodes pour lisser des trajectoires. Elles sont choisi suivant les applications. La méthode catmull est très intéressante.


Le principe:

Avec Catmull, la trajectoire lissée passe par tous les "points de contrôle" sauf le premier et le dernier.


A t=0,
On prend les 4 premiers points de contrôle: P0, P1, P2 et P3.
Pendant une seconde on calcule l'emplacement de l'objet entre les points P1 et P2.



Quand t>=1, on pose t=0 (t doit toujours être entre 0 et 1) et:
on avance d'un point de contrôle en prennant à nouveau 4 points: P1,P2,P3 et P4.
Pendant une seconde on calcule l'emplacement de l'objet entre les points P2 et P3.



Etc...

Le calcul:

Pour calculer la position de l'objet, on utilise donc les coordonnées de 4 points succéssifs de la trajectoire, le temps et une matrice de la façon suivante:



Avec t variant de 0 à 1.

Pendant une seconde, la position de l'objet entre les points P1 et P2 est donc:


Avec:



Avec cette méthode, pour que la vitesse d'un objet soit constante, il faut donc que les "points de contrôle" soient à égale distance. On fait varier la vitesse d'un objet en faisant varier les distances entre les points de contrôle. Les vitesses ne varient pas brusquement et les accélérations sont continues.

Téléchargez une démo avec code source ICI. (OpenGL + SDL).

Références:
Romka (site Internet disparu aujourd'hui)



Version originale: Février 2005
Dernière mise à jour: Février 2005
Par Grégory Smialek
www.texel.fr.fm