analog 2D mit Translationsmatrix basierend auf homogener Variante des Punktes:
kartesische Koordinaten für
analog 2D mit Skalierungsmatrix basierend auf homogener Variante des Punktes:
Unterscheidung, um welche Achse rotiert werden soll
Beispiel: Rotation um z-Achse:
hierbei: entsprechender Wert der Rotationsachse in Matrix ist = 1, die anderen Werte in der Zeile = 0
bei Rotation um x-Achse wäre dementspechend die erste Zeile:
GLfloat T[16];
in openGL spaltenweise abgelegt
üblerweise zeilenweise abgelegt
alle Transformationen werden auf GL_MODELVIEW-Matrix ausgeführt
MODELVIEW-Matrix übersetzt in Kamerakoordinatensystem
Aktivierung durch glMatrixMode(GL_MODELVIEW);
Beispiele:
glLoadIdentity, glLoadMatrix, glMultMatrix glRotate, glScale, glTranslate, glPushMatrix, glPopMatrix
erzeugen entsprechende Transformationsmatrix und multiplizieren diese von rechts an aktuelle Modelview-Matrix
Dadurch ist die Reihenfolge der Transformationen umgekehrt zur Reihenfolge im Code
glLoadIdentity
setzt GL_MODELVIEW auf
Rotation um beliebige Achse durch Rotation um einzelne Achsen hintereinander
Das ursprüngliche Koordinatensystem bleibt dabei unbewegt/erhalten. Wegen Multiplikation von rechts ist die Reihenfolge im Code genau umgekehrt.
Alternative Interpretation:
Koordinatensystem wird mitgedreht. Hierbei wird die Multiplikationsreihenfolge von links nach rechts betrachtet.
mehrfache Rotation um gleiche Achse
Beispiel:
Eigenschaften
Motivation
Eulerwinkel sind unstetig, z.B. Risiko des Gimbal Lock
erzeugende Eulerwinkel aus gegebener Rotationsmatrix u.U. nicht eindeutig
können im Gegensatz zu Rotationsmatrizen linear interpoliert werden.
z.B. für Animationen
bestehen aus 4 Komponenten
Repräsentation von Rotationen (um beliebige Achse n um Winkel
Quaternionen-Multiplikation:
nicht kommutativ
kann zur Verkettung von Rotationen verwendet werden
Inversion möglich durch Flippen der letzten 3 Komponenten
Rotation
Punkt
Quaternion q kann in Rotationsmatrix konvertiert werden