Rotationsmatrix aus Richtungsvektor berechnen
-
Hi @ all!
Ich hab folgendes Problem:
In meinem Spiel soll es Autos geben, die immer zu bestimmten Zielen fahren (also zum Beispiel zum nächsten "Eckpunkt" der Straße). In der CCar-Klasse gibt es u.a. einen Positionsvektor, einen Geschwindigkeitsvektor und eine Matrix, die die Rotation des Wagens beschreibt. Um den Wagen auszurichten, errechne ich die Differenz aus Ziel- und Positionsvektor und normalisiere das Ergebnis. So hab' ich 'nen Richtungsvektor.Wie kann ich jetzt die Rotationsmatrix berechnen, die den Wagen in Richtung des Richtungsvektors ausrichtet?
Vielen Dank für eure Hilfe!
-
Eine 3x3-Rotationsmatrix besteht aus drei Basisvektoren die senkrecht aufeinander stehen.
Gegeben ist Dein Richtungsvektor "dir" und eine ungefaehre Schaetzung des Up-Vektor (entsprechend Deines Koordinatensystems, zb 0,-1,0).
Daraus kannst Du die Basisvektoren bx,by,bz konstruieren:bz= dir / |dir| (normierter Vektor) bx= up x bz (Kreuzprodukt, ergibt Vektor entlang der X-Achse) bx= bx / |bx| by= bz x bx (Kreuzprodukt aus X- und Z-Achse ergibt tatsaechlich Y-Achse) by= by / |by|
Die Z-Achse der Rotationsmatrix verlaeuft hier entlang des Richtungsvektors; je nach Grundausrichtung Deines Models sind die Basen entsprechend zu tauschen.
In welcher Reihenfolge die Basisvektor in der Matrixstruktur eingetragen sind haengt von Deiner API ab.
-
Danke, jetzt hab ich's gecheckt.
Hätte nicht gedacht, dass es so einfach ist.Mr Train