Formeln: Unterschied zwischen den Versionen
Aus Das Sopra Wiki
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
| Zeile 22: | Zeile 22: | ||
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: | ||
<math>\measuredangle\left(\vec o_f, \vec d_{ot}\right) = \arccos (\vec o_f \cdot \vec d_{ot}) \!\,</math> | <math>\measuredangle\left(Y-Achse\right) = \measuredangle\left(\vec o_f, \vec d_{ot}\right) = \arccos\left(\vec o_f \cdot \vec d_{ot}\right) \!\,</math> | ||
Jetzt muss man nur noch bestimmen ob man das Objekt um diesen Winkel nach links oder rechts drehen muss um es zum Ziel hin auszurichten. Dies lässt sich nun leicht anhand des Y-Werts des Kreuzprodukts der beiden Winkel bestimmen. Da beide Vektoren auf der X-Z-Ebene liegen, liegt der Vektor des Kreuzprodukts auf der Y-Achse, da dieser orthogonal zu den anderen Vektoren ist. Das Vorzeichen des Y-Werts des Kreuzprodukts gibt daher an ob man nach links oder rechts drehen muss: | Jetzt muss man nur noch bestimmen ob man das Objekt um diesen Winkel nach links oder rechts drehen muss um es zum Ziel hin auszurichten. Dies lässt sich nun leicht anhand des Y-Werts des Kreuzprodukts der beiden Winkel bestimmen. Da beide Vektoren auf der X-Z-Ebene liegen, liegt der Vektor des Kreuzprodukts auf der Y-Achse, da dieser orthogonal zu den anderen Vektoren ist. Das Vorzeichen des Y-Werts des Kreuzprodukts gibt daher an ob man nach links oder rechts drehen muss: | ||
| Zeile 43: | Zeile 43: | ||
<math>tempY = \vec d_{ot}.y - \vec o_f.y \!\,</math> <br/> | <math>tempY = \vec d_{ot}.y - \vec o_f.y \!\,</math> <br/> | ||
<math>\vec d_f = \vec o_f \!\,</math> <br/> | <math>\vec d_f = \vec o_f \!\,</math> <br/> | ||
<math>\vec d_f.y + | <math>\vec d_f.y = \vec d_f.y + tempY \!\,</math> <br/> | ||
<math>\vec d_f.normalize() \!\,</math> <br/> | <math>\vec d_f.normalize() \!\,</math> <br/> | ||
Der gesuchte Winkel ist dann der Arkuscosinus des Skalarprodukts des Forwardvektors des Objekts und des in die selbe Ebene projizierten Richtungsvektors vom Objekt zum Zielpunkt: | Der gesuchte Winkel ist dann der Arkuscosinus des Skalarprodukts des Forwardvektors des Objekts und des in die selbe Ebene projizierten Richtungsvektors vom Objekt zum Zielpunkt: | ||
<math>\measuredangle\left(\vec o_f, \vec d_f\right) = \arccos (\vec o_f \cdot \vec d_f) \!\,</math> | <math>\measuredangle\left(X-Achse\right) = \measuredangle\left(\vec o_f, \vec d_f\right) = \arccos\left(\vec o_f \cdot \vec d_f\right) \!\,</math> | ||
Ob man um diesen Winkel um die X-Achse nach oben oder unten drehen muss ist kann man dann ganz einfach anhand des temporär berechneten Y-Werts bestimmen, wenn tempY > 0 dann dreht man nach oben, andernfalls nach unten. | Ob man um diesen Winkel um die X-Achse nach oben oder unten drehen muss ist kann man dann ganz einfach anhand des temporär berechneten Y-Werts bestimmen, wenn tempY > 0 dann dreht man nach oben, andernfalls nach unten. | ||
[[Kategorie:Mathematik]] | [[Kategorie:Mathematik]] | ||
