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


Anmelden zum Antworten