jeudi 22 juillet 2010

Bézier & Co

Julien et Kokuma ont très justement noté dans le post précédent que le genre de problème consistant à trouver des courbes à partir de points de contrôle se résout très bien en utilisant des courbes de Bézier.

C'est une approche tout à fait valide, et qui est probablement plus compréhensible pour l'utilisateur. Cependant, les courbes de Bézier souffrent de quelques désavantages dans le cas qui nous occupe.

Le plus criant est la difficulté de calculer une longueur sur la courbe. Mes trains se déplaçant à vitesse fixe, je dois pouvoir aller chercher un point à distance x de ma courbe, et de facilement trouver quelle est ma position et mon orientation en ce point. Il faut également définir quelle est la distance jusqu'à la fin de la courbe, pour savoir quand passer à la suivante.

Moins gênant dans l'immédiat, mais également problématique, le calcul de la courbure. En effet, la vitesse maximale du train sur une section de rail dépend de la courbure, ce qui est réaliste d'une part, et propose un défi intéressant à l'utilisateur qui doit optimiser ses voies pour la vitesse d'autre part. D'ailleurs, en travaillant à partir de courbes de Bézier, il est moins évident pour l'utilisateur d'observer la courbure maximale de son rail. Avec des arcs de cercle, la courbure est constante, et il est beaucoup plus facile pour l'utilisateur de percevoir les contraintes de vitesse.

Ces deux problèmes peuvent bien entendu se résoudre numériquement, mais sont triviaux avec des droites et des arcs de cercle.

Il est d'ailleurs intéressant de noter à quel point la difficulté d'implémentation s'équilibre: les droites et les courbes rendent les déplacement du train très faciles, mais sont difficiles à disposer. Les courbes de Bézier rendent les voies très simples à installer, mais le déplacement du train devient alors problématique.

J'ai un instant pensé à utiliser des arcs d'ellipses (avouez que ça aurait eu de la gueule!), mais j'ai vite déchanté en voyant la formule de calcul de la circonférence. L'ellipse est donc plutôt du côté Bézier, plutôt plus facile à disposer, puisqu'un seul arc peut s'adapter aux points de contrôle, mais beaucoup plus difficile en termes de navigation.

Aucun commentaire: