Ich versuche eine Klasse zu erstellen, die beliebig viele Punkte (Position und Kontrolle) aufnimmt und basierend auf den gegebenen Informationen einen catmull-rom Spline erstellt.Catmull-Rom-Splines verbinden und ihre Länge berechnen?
Was ich tue - und ich bin wirklich nicht sicher, ob dies der richtige Weg ist, es zu tun - ist jeden einzelnen Punkt in einer Klasse zu speichern etwa so:
class Point { public: Vector3 position; Vector3 control; }
Wo offensichtlich Position Die Position des Punktes und der Kontrolle ist der Kontrollpunkt.
Mein Problem ist die Verbindung der Splines - offensichtlich vorausgesetzt, dass die oben genannte Klasse, die einen Punkt im Spline-Array hält, angibt, dass jede gegebene Position nur einen Kontrollpunkt haben kann. Wenn also drei oder mehr Punkte in einem catmull rom Spline vorhanden sind, teilen sich die verschiedenen einzelnen catmull-rom Splines, die verbunden werden, eine Position und eine Steuerung mit einem anderen solchen Spline.
Jetzt mit Position wird das gleiche benötigt - da ich Splines erstellen möchte, die untereinander kontinuierlich sind. Allerdings frage ich mich, ob die Kontrollpunkte zwischen den beiden Splines auch gleich sind. Mit ein wenig Fiedeln der Kontrollpunkte kann ich den Übergang von einem Spline zum nächsten scheinbar fließend erscheinen lassen, aber ich muss betonen, dass ich nicht sicher bin, ob die Art und Weise, wie sie sich verändern, mit der Form von catmull-rom Splines übereinstimmt . Ich würde es lieber richtig machen, als auf meinen Händen zu sitzen und zu rationalisieren, dass es gut genug ist.
Offensichtlich ist der zweite Teil meiner Frage selbsterklärend: Gegeben zwei Kontroll- und Positionspunkte wie berechne ich die Länge eines catmull-rom Splines?