Formeln: Unterschied zwischen den Versionen
Aus Das Sopra Wiki
Keine Bearbeitungszusammenfassung |
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 | 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]] | ||
