Formeln: Unterschied zwischen den Versionen

Aus Das Sopra Wiki
Florian (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Florian (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Zeile 5: Zeile 5:
== Drehung zu einem Ziel im 2D Fall ==
== Drehung zu einem Ziel im 2D Fall ==


Im folgenden wird erklärt wie man ein Objekt im zweidimensionalen Fall, also auf einer Ebene, zu einem Ziel drehen kann. Die Vorraussetzungen die man hierzu benötigt sind der Positionsvektor des Objekts (<math>\vec o_p \!\,</math>), der Forwardvektor des Objekts (<math>\vec o_f \!\,</math>) welcher angibt in welche Richtung es gerade gedreht ist und der Positionsvektor des Zielpunkts (<math>\vec t_p \!\,</math>) zu welchem sich das Objekt drehen soll. Gehen wir im weiteren davon aus dass sich das Objekt auf der X-Z-Ebene bewegt, um es zum Zielpunkt zu drehen müssen wir es also um seine eigene Y-Achse drehen. Für andere Ebenen funktioniert das ganze analog, es muss nur entsprechend immer um die zur Ebene orthogonale Achse gedreht werden.
Im folgenden wird erklärt wie man ein Objekt im zweidimensionalen Fall, also auf einer Ebene, zu einem Ziel drehen kann. Die Vorraussetzungen die man hierzu benötigt sind der Positionsvektor des Objekts (<math>\vec o_p \!\,</math>), der Forwardvektor des Objekts (<math>\vec o_f \!\,</math>) welcher angibt in welche Richtung es gerade gedreht ist und der Positionsvektor des Zielpunkts (<math>\vec t_p \!\,</math>) zu welchem sich das Objekt drehen soll. Gehen wir im weiteren davon aus dass sich das Objekt auf der X-Z-Ebene bewegt, um es zum Zielpunkt zu drehen müssen wir es also um seine eigene Y-Achse drehen.


Als erstes projiziert man den Forwardvektor des Objekts auf die X-Z-Ebene (indem man den Y-Wert auf 0 setzt) und normalisiert den Vektor um die Berechnung des Winkels später zu vereinfachen:
Als erstes projiziert man den Forwardvektor des Objekts auf die X-Z-Ebene (indem man den Y-Wert auf 0 setzt) und normalisiert den Vektor um die Berechnung des Winkels später zu vereinfachen:
Zeile 27: Zeile 27:


Wenn crossY > 0 ist dann muss man nach links drehen, ansonsten nach rechts. (Dies kann man mit der Rechte-Hand-Regel bestimmen.)
Wenn crossY > 0 ist dann muss man nach links drehen, ansonsten nach rechts. (Dies kann man mit der Rechte-Hand-Regel bestimmen.)
== Drehung zu einem beliebigen Punkt im 3D Raum ==
Durch eine Drehung um seine X- und Y-Achse kann ein Objekt zu einem beliebigen Punkt im 3D Raum ausgerichtet werden. Eine Drehung um die Z-Achse bewirkt lediglich ein seitliches rollen. Um ein Objekt also auf einen beliebigen Punkt zu drehen muss man lediglich die Winkel um die X- und Y-Achse relativ zum Zielpunkt berechnen und um diese drehen. Benötigt werden hierzu wieder der Positionsvektor des Objekts (<math>\vec o_p \!\,</math>), der Forwardvektor des Objekts (<math>\vec o_f \!\,</math>) welcher angibt in welche Richtung es gerade gedreht ist und der Positionsvektor des Zielpunkts (<math>\vec t_p \!\,</math>) zu welchem sich das Objekt drehen soll.
Als erstes berechnet man den Richtungsvektor vom Objekt zum Zielpunkt (<math>\vec d_{ot}\!\,</math>) durch einfaches subtrahieren und anschließendes normalisieren:
<math>\vec d_{ot} = \vec t_p - \vec o_p \!\,</math> <br/>
<math>\vec d_{ot}.normalize() \!\,</math>


[[Kategorie:Mathematik]]
[[Kategorie:Mathematik]]