Das Problem, ein angezeigtes Objekt von der gewünschten Blickrichtung zu betrachten,
kann z.B. durch einen Ansichtspunkt, der mit dem Koordinatenursprung
einen Sichtvektor bildet, durch die Eingabe von drei Koordinaten gelöst werden. Da
es aber für den Anwender aufwendig ist, so den gewünschten Ansichtspunkt zu finden,
wurde als Methode die Drehung um jeweils eine Koordinatenachse vorgezogen.
Eine Drehung eines Punkts um die -Achse erfolgt durch
Der Punkt wird bei positivem Drehwinkel gegen den Uhrzeigersinn unter der
Voraussetzung, daß ein rechtshändiges Koordinatensystem vorliegt,
wie in Abbildung 6.11 gezeigt, auf
verschoben.
Abbildung 6.11: Drehung um die z-Achse
Durch zyklische Vertauschung von -,
- und
-Achse erhält man für die Rotation
um die
-Achse
und für die Rotation um die -Achse
Eine beliebige Orientierung eines Objekts kann durch eine zusammengesetzte Drehung
aus drei sequentiellen Drehungen um jeweils eine Achse gefunden werden. Für die
Berechnung einer zusammengesetzten Transformation müssen jedoch zwei Regeln
der Matrizenmultiplikation berücksichtigt werden: Es gilt Assoziativität,
jedoch keine Kommutativität. Die Reihenfolge der Transformationen darf daher
nicht vertauscht werden. Die in Gleichung (6.4) angegebene Form
dreht das Objekt zuerst um die -Achse, dann erfolgt eine Drehung um die
-Achse. Es wird natürlich nicht um die ursprüngliche y-Achse gedreht,
sondern um die
-Achse. Die Drehung um die
-Achse ist durch die beiden
vorhergehenden Operationen bestimmt. Man spricht in diesem Fall von
Nested Rotations.
Diese Art von Objektdrehung ist aber in diesem Fall
unerwünscht.
Bildet man nämlich die Bewegung eines Steuerknüppels in eine Drehung ab,
so soll sich das Objekt in die gleiche Richtung bewegen, wie sich die Hand bewegt
[Bri78]. In diesem Fall spricht man von Kinesthetic Correspondence.
Eine Drehung über starre Achsen kann dies über sogenannte
Nonnested Rotations. Die Drehung bzw. Transformation von dem
Weltkoordinatensystem zu einem neuen Koordinatensystem
ist mit
gegeben, wobei
spaltenweise die Koordinatenachsen im Weltkoordinatensystem beschreiben und
das gedrehte Koordinatensystem ist. Die Rücktransformation kann einfach mit
durchgeführt werden.
Will man nun nach einer erfolgten Drehung eine weitere Drehung um eine
Orginalachse vornehmen, so ist zunächst der Einfluß der Transformationsmatrix auf
die Drehung um gewünschte Drehachse ,
oder
mit
zu kompensieren.
Nun kann um eine Drehung über die eben berechnete Achse mit
gedreht werden.
Die Drehung um eine beliebig orientierte Koordinatenachse um einen Winkel
wird in [Bri78] mit
angegeben. Die Matrix ist so definiert, daß der Achsenanfang im Koordinatenursprung liegen muß und das Achsenende im Punkt (x,y,z). Eine Ableitung einer Drehung um eine beliebige Achse kann [Fel92] entnommen werden.
Auch bei doppelt genauer Gleitkommadarstellung kommt es ab ungefähr 100 Drehungen zu numerischen
Problemen, die
aus den Matrizenmultiplikationen mit endlicher Genauigkeit resultieren.
Die Orthogonalität der Transformationsmatrix ist davon nicht betroffen. Es ist ein
Skalierungsproblem der Matrix. Nach etwa zehn Drehungen sollte die Transformationsmatrix abwechselnd zeilenweise
bzw. spaltenweise renormalisiert werden. Zu bemerken ist, daß die Transformationsmatrizen meist
große Matrizen sind, um homogene Koordinaten zu verarbeiten [Gla90][Fel92], und die
Objektskalierung nicht im
großen Rotationsanteil der Matrix durchgeführt wird, sondern im
Diagonaleintrag der vierten Zeile enthalten ist. Unter diesen Voraussetzungen kann der
Rotationsanteil der Matrix ohne Probleme renormalisiert werden.