Formeln: Unterschied zwischen den Versionen
Aus Das Sopra Wiki
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| Zeile 7: | Zeile 7: | ||
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. Für andere Ebenen funktioniert das ganze analog, es muss nur entsprechend immer um die zur Ebene orthogonale Achse gedreht werden. | ||
Als erstes | 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: | ||
<math>\vec o_f.y = 0 \!\,</math> <br/> | |||
<math>\vec o_f.normalize() \!\,</math> | |||
Dann berechnet man den Richtungsvektors vom Objekt zum Zielpunkt (<math>\vec d_{ot}\!\,</math>). Der Y-Wert wird auf 0 gesetzt um auch diesen auf die X-Z-Ebene zu projizieren. Zusätzlich wird der Vektor ebenfalls normalisiert: | |||
<math>\vec d_{ot} = \vec t_p - \vec o_p \!\,</math> <br/> | <math>\vec d_{ot} = \vec t_p - \vec o_p \!\,</math> <br/> | ||
<math>\vec d_{ot}.y = 0 \!\,</math> <br/> | <math>\vec d_{ot}.y = 0 \!\,</math> <br/> | ||
<math>\vec d_{ot}.normalize() \!\,</math> | <math>\vec d_{ot}.normalize() \!\,</math> | ||
Das Skalarprodukt des Forwardvektors und des Richtungsvektors zum Zielpunkt liefert nun den Arkuscosinus des Winkels um den das Objekt zum Zielpunkt auf der Y-Achse gedreht ist: | Das Skalarprodukt des Forwardvektors und des Richtungsvektors zum Zielpunkt liefert nun den Arkuscosinus des Winkels um den das Objekt zum Zielpunkt auf der Y-Achse gedreht ist: | ||
