Formeln: Unterschied zwischen den Versionen

Aus Das Sopra Wiki
Florian (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Florian (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
{{Stub}}
{{Stub}}
__FORCETOC__


Dieser Artikel enthält ähnlich einer Formelsammlung nützliche Berechnungen zur Spieleprogrammierung.
Dieser Artikel enthält ähnlich einer Formelsammlung nützliche Berechnungen zur Spieleprogrammierung.
Zeile 30: Zeile 32:
== Drehung zu einem beliebigen Punkt im 3D Raum ==
== 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.
Durch eine Drehung von -180° bis +180° um seine Y-Achse und eine Drehung von -90° bis +90° um seine X-Achse kann ein Objekt zu jedem 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 das Objekt dann 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:
Als erstes berechnet man den Richtungsvektor vom Objekt zum Zielpunkt (<math>\vec d_{ot}\!\,</math>) durch einfaches subtrahieren und anschließendes normalisieren:
Zeile 36: Zeile 38:
<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}.normalize() \!\,</math>
<math>\vec d_{ot}.normalize() \!\,</math>
Die Berechnung des Winkels um die Y-Achse geht dann analog zum 2D Fall durch das projizieren des Forwardvektors des Objekts und des Richtungsvektors vom Objekt zum Zielpunkt auf die X-Z-Ebene und das anschließende Berechnen des Winkels zwischen diesen beiden Vektoren. Hinzu kommt nun also lediglich die Berechnung des Winkels um den um die X-Achse gedreht werden muss.


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