Rotationsaddition

mojitoweb

Mitglied
Die Situation sieht wie folgt aus:

Ich möchte ein Objekt mehrmals drehen und die Vergangenen Drehungen in einer Drehung zusammenfassen. Eine Drehung besteht aus einem Vektor V im R3 (also der Drehachse) und einem Winkel W.

Frage ist nun also, wie ich aus V1 mit W1 und V2 mit W2 eine Drehung macht. Im optimalfall sollte diese auch in der Form V3 mit W3 vorliegen, es würde aber auch ausreichen, wenn sie durch die 3 Rotationen um die Koordinatenachsen beschrieben wird.

Mein Erster Ansagt war:

1. Aus V1 mit W1 und V2 mit W2 die Rotationsmatrizen R1 und R2 aufzustellen.

Quelle: http://de.wikipedia.org/wiki/Drehmatrix

2. Dann aus R1 und R2 jeweils die "Roll-Pitch-Yaw-Winkel" zu berechnen, also die Drehungen um die X-, Y- und Z-Achse.
Als Ergebnis sollten dann je 3 Rotationen (WX1, WY1, WT1, WX2, WY2, WT2) herauskommen.

Quelle: http://de.wikipedia.org/wiki/Roll-Pitch-Yaw-Winkel

3. Addition der Achsenrotationen:

WX3 = WX1 + WX2;
WY3 = WY1 + WY2;
WZ3 = WZ1 + WZ2;

4. 3 Rotationen des Objekts:

Code:
gl.glRotatef(WX3, 1.0f, 0.0f, 0.0f);
gl.glRotatef(WY3, 0.0f, 1.0f, 0.0f);
gl.glRotatef(WZ3, 0.0f, 0.0f, 1.0f);

Der Ansatz hat irgendwo einen Denk oder Rechenfehler, da die Winkel der Achsenrotationen zu klein sind. (Ich könnte ggf. noch meine Berechnungen posten) Aber eine Kernfrage ist: Gibt es noch einen besseren Lösungsansatz, bzw kann der beschriebene Ansatz überhaupt zum erfolg führen?

mfg mojito
 
Zurück