Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Rotationsmatrix -> Rotationswinkel?

165 views
Skip to first unread message

Andreas Weishaupt

unread,
Feb 9, 2010, 1:36:12 PM2/9/10
to
Hallo

Mmh, mein Algebra-Kurs liegt doch schon einige Zeit zur�ck und ich finde
keine gute Quelle, die mir helfen k�nnte, mein Problem zu l�sen. Ich
habe eine 3x3 Rotationsmatrix mit Elementen r11, r12, r13 etc. Wie kann
ich diese nun zerlegen, dass ich daraus die 3 Euler-Winkel
herausbekomme? Und gibt's daf�r eine MATLAB-Funktion?

Besten Dank f�r eure Hilfe

Andreas

JCH

unread,
Feb 9, 2010, 1:54:32 PM2/9/10
to

"Andreas Weishaupt" <andreas....@epfl.ch> schrieb im Newsbeitrag
news:1265740...@sicinfo3.epfl.ch...


Siehe

H.R. Schwarz, Numerische Mathematik, B.G. Teubner Stuttgart

Kap. 6.2.1 und 6.2.2


--
Gr��e JCH


Gottfried Helms

unread,
Feb 9, 2010, 2:30:05 PM2/9/10
to
Am 09.02.2010 19:36 schrieb Andreas Weishaupt:
> Hallo
>
> Mmh, mein Algebra-Kurs liegt doch schon einige Zeit zur�ck und ich finde
> keine gute Quelle, die mir helfen k�nnte, mein Problem zu l�sen. Ich
> habe eine 3x3 Rotationsmatrix mit Elementen r11, r12, r13 etc. Wie kann
> ich diese nun zerlegen, dass ich daraus die 3 Euler-Winkel
> herausbekomme? Und gibt's daf�r eine MATLAB-Funktion?
>
> Besten Dank f�r eure Hilfe
>
> Andreas

3x je eine Ebene rotieren.
1) xy-Ebene
2) xz-ebene
3) yz-ebene
Jeweils mit einer "Dreiecks"-Rotation eine der beiden
Koordinaten auf Null rotieren und diese drei Rotationen
abspeichern/behalten

In MatMate habe ich eine Funktion, die zwei (oder mehr)
Achsen auf Dreiecksform rotiert und die daf�r n�tige
Rotationsmatrix zur�ckgibt.
Mit einer zuf�lligen Rotationsmatrix t gergibt sich
folgender Ablauf:

;===========================================
;MatMate-Listing vom:09.02.2010 20:15:38
;============================================
[1] set listing=on
t : // die zuf�llige Roationsmatrix
0.56 -0.07 0.82
0.83 0.04 -0.56
0.01 1.00 0.09

// nun wird die Rotationsmatrix z12 gesucht. rotiert werden die Spalten {1,2}
// und das Rotationskriterium wird aus den Zeilen 1,2,3 genommen (die 3 k�nnte
// entfallen. Man sieht, da� z12 nur die x-y-Ebene rotiert und die z-koordinate
// unber�hrt l��t
[2] z12 = gettrans(t,"drei",{1,2,3},{1,2})
z12 :
0.99 0.13 0.00
-0.13 0.99 0.00
0.00 0.00 1.00

// Die Rotation, auf t angewendet gibt t1:
[3] t1 = t*z12
t1 :
0.57 0.00 0.82
0.81 0.15 -0.56
-0.12 0.99 0.09

// nun wird die Rotationsmatrix z13 gesucht. rotiert werden die Spalten {1,3}
[4] z13 = gettrans(t1,"drei",{1,3,2},{1,3})

z13 :
0.57 0.00 -0.82
0.00 1.00 0.00
0.82 0.00 0.57

[5] t2 = t1*z13
t2 :
1.00 0.00 0.00
0.00 0.15 -0.99
-0.00 0.99 0.15

// nun wird die Rotationsmatrix z23 gesucht. rotiert werden die Spalten {2,3}
[6] z23 = gettrans(t2,"drei",{2,3,1},{2,3})
z23 :
1.00 0.00 0.00
0.00 0.15 0.99
0.00 -0.99 0.15

[7] t3 = t2*z23
t3 :
1.00 0.00 0.00
0.00 1.00 0.00
-0.00 -0.00 1.00

t3 ist jetzt die mit 3 Euler-Winkeln auf ID rotierte matrix t.
D.h. die drei Euler-Winkel k�nnen jetzt aus den cosinussen und sinussen
in z12,z13,z23 bestimmt werden.

Solch eine "Dreiecks-"rotationsprozedur sollte in Maple
leicht zu basteln sein...

Gru� -

Gottfried

Thomas Nordhaus

unread,
Feb 9, 2010, 2:50:47 PM2/9/10
to
Andreas Weishaupt schrieb:

Ich hab' das letztens berechnet und kam da auf folgende Formeln f�r die
Rotationsmatrix R = R_ij:

R11=cc*cb R12=sa*sb*cc+ca*sc R13=-ca*sb*cc+sa*sc
R21=-cb*sc R22=-sa*sb*sc+ca*cc R23=ca*sb*sc+sa*cc
R31=sb R32=-sa*cb R33=ca*cb

Zur Erkl�rung: sa, sb, sc steht f�r sin(alpha), sin(beta), sin(gamma),
ca, cb, cc analog f�r cos(alpha) etc. alpha, beta, gamma sind die
Eulerwinkel bei Rotation um x-, y-, z-Achse (in dieser Reihenfolge von
rechts nach links). Aus der dritten Zeile sollte man beta und alpha
berechnen k�nnen, gamma dann aus R11 bzw. R21.

--
Thomas Nordhaus

Ernst Sauer

unread,
Feb 9, 2010, 3:30:36 PM2/9/10
to
Andreas Weishaupt schrieb:

Wenn ich mir die Matrizen anschaue
http://de.wikipedia.org/wiki/Eulersche_Winkel
und nehme z.B. die Matrix Mzxz, dann bekomme ich

teta=arccos(r33);
-tan(psi)=r13/r23; psi=arctan(-(r13/r23))
tan(phi)=r31/r32; phi=arctan(r31/r32)

Jetzt muss man allerdings noch �ber die Vorzeichen der Winkel nachdenken.
Den Winkel phi kann man mit dem atan2 direkt berechnen
(vorausgesetzt sin(teta)!=0).
Zur eindeutigen Berechnung der beiden anderen Winkeln muss man
die �brigen Matrixelemente heranziehen.
Vielleicht gelingt es, diese Elemente so zu teilen/umzuformen,
dass man eine Aussage �ber die Vorzeichen bekommt.
Notfalls nimmt man ein Vorzeichen an, berechnet die Elemente
und �berpr�ft/korrigiert dann die Werte.

Mit Gru�
Ernst Sauer

Andreas Weishaupt

unread,
Feb 16, 2010, 7:59:47 AM2/16/10
to
Besten Dank f�r die zahlreichen Informationen. Ich habe mir halb das
Buch bestellt, denn das Ganze ist nicht so dringend.;)
Gruss
Andreas

Hero

unread,
Feb 16, 2010, 3:24:53 PM2/16/10
to
, Andreas wrote:

>
> > Mmh, mein Algebra-Kurs liegt doch schon einige Zeit zurück und ich finde
> > keine gute Quelle, die mir helfen könnte, mein Problem zu lösen. Ich


> > habe eine 3x3 Rotationsmatrix mit Elementen r11, r12, r13 etc. Wie kann
> > ich diese nun zerlegen, dass ich daraus die 3 Euler-Winkel

> > herausbekomme? Und gibt's dafür eine MATLAB-Funktion?
>
> > Besten Dank für eure Hilfe
>
> > Andreas

Wie ist es hiermit:
http://1iz.heim.at/theart-Dateien/rot-deutsch.pdf

Mit freundlichen Grüßen
Hero

0 new messages