J'essaye de créer une classe qui prend n'importe quel nombre de points (position et contrôle) et crée une spline de catmull-rom basée sur l'information donnée.Relier les cannelures Catmull-Rom et calculer sa longueur?
Ce que je fais - et je suis vraiment pas sûr que ce soit la bonne façon de le faire - est le stockage de chaque point individuel dans une classe comme ceci:
class Point { public: Vector3 position; Vector3 control; }
Où évidemment position la position du point et du contrôle est le point de contrôle.
Mon problème est de connecter les splines - évidemment, étant donné que la classe ci-dessus maintient un point dans le tableau spline indique qu'une position donnée ne peut avoir qu'un seul point de contrôle. Ainsi, lorsque vous avez trois points ou plus dans une spline catmull rom les différentes splines catmull-rom individuels qui sont connectés partagent une position et un contrôle avec une autre spline.
Maintenant avec la position étant le même est nécessaire - puisque je veux créer des splines qui sont continues entre eux. Cependant je me demande vraiment, les points de contrôle devraient-ils être les mêmes entre les deux splines? Avec un peu de bidouillage des points de contrôle, je peux faire sembler passer sans heurts d'une spline à l'autre mais je dois souligner que je ne suis pas sûr que la façon dont ils sont en transition est cohérente avec la façon dont les splines catmull-rom forment leur forme . Je préférerais le faire correctement plutôt que de m'asseoir sur mes mains et de rationaliser que c'est assez bon.
Évidemment, la deuxième partie de ma question est explicite: Étant donné deux points de contrôle et de position, comment calculer la longueur d'une spline catmull-rom?