Ingo Albers
2003-08-27 13:24:36 UTC
[achtung: länglich]
Hallo zusammen,
ich habe zwar schon einige interessante postings zum Thema
Eulerwinkel bei groups.google gefunden, aber mein Anliegen
trifft das noch nicht so ganz, daher hier meine Frage.
Ich habe folgende Anwendung:
Ich habe ein Ausgangs-Koordinatensystem (KS_alt) sowie ein
Ziel-KS (KS_neu). Beide sind rechtwinklig und rechtsdrehend.
Die Richtungsvektoren des KS_neu liegen bezogen auf das
KS_alt vor. Der Ursprung ist identisch, es handelt sich also
um reine Rotationen.
Innerhalb eines Berechnungsalgorithmus möchte ich nun unab-
hängig von der Lage des KS_neu eine eindeutige Eulermatrix
formulieren, mit der ich dann meine gewünschten Koordinaten-
Transformationen durchführen kann.
Dazu gibt es einige verschiedene Euler Konventionen (hier
sprach mal jemand von 24 verschiedenen, die Literaturquelle
"Graphics Gems" konnte ich über unsere Bib aber leider bisher
nicht beziehen).
Ich würde gerne eine Konvention verwenden, die mit der Information
der drei Richtungswinkel des KS_neu die Eulerwinkel eindeutig
festlegt.
Mit eindeutig meine ich in diesem Sinne, dass ich mich nicht um
Winkelvorzeichen, Zählrichtung von Winkeln und z.B. der Thematik
"cos(45°)=cos(-45°)" kümmern möchte, weil ich eine Berechnung
programmieren möchte, bei der ein zwischenzeitliches "scharfes
Hinsehen" einfach nicht möglich ist.
Daher erscheint mir die x-Konvention unter
http://mathworld.wolfram.com/EulerAngles.html
als ungeeignet.
Im Taschenbuch der Mathematik (Bronstein et al, 2.Auflage) habe ich
eine andere Konvention entdeckt (S. 179f).
+++Quote+++
Eulersche Winkel
Die Lage des neuen KS relativ zum alten kann mit Hilfe von drei
Winkeln, die Euler eingeführt hat, vollständig bestimmt werden.
a) Nutationswinkel theta wird der Winkel zwischen den positiven
Richtungen der z- und der z_neu-Achse genannt, er liegt in den
Grenzen 0 <= theta < Pi [1]
b) Präzessionswinkel psi wird der Winkel zwischen der positiven
Richtung der x-Achse und der Schnittgeraden OA zwischen der
x,y- und x_neu, y_neu - Ebene genannt. [2] Die positive Richtung
von theta wird derart gewählt, dass die z-Achse, die z_neu-Achse
sowie OA ein Richtungstripel mit der gleichen Orientierung bilden
wie die Koordinatenachsen. [3] Die Messung von psi erfolgt von der
x-Achse aus in Richtung y-Achse; die Grenzen sind 0 <= psi < Pi [4]
c) Drehungswinkel phi wird der Winkel zwischen der positiven
x_neu-Richtung und der Schnittgeraden OA genannt; er liegt in den
Grenzen 0 <= phi < 2Pi [5]
Setzen wir nun
c1=cos theta c2=cos psi c3=cos phi
s1=sin theta s2=sin psi s3=sin phi
dann ergibt sich folgende Eulermatrix A:
a11=c2*c3-c1*s2*s3 a12=-c2*s3-c1*s2*c3 a13=s1*s2
a21=s2*c3+c1*c2*s3 a22=-s2*s3+c1*c2*c3 a23=-s1*c2
a31=s1*s3 a32=s1*c3 a33=c1
+++Ende Quote+++
zu [1]:
bin ich hier mit
theta=arccos((vek_z*vek_z_neu)/(vek_z^2*vek_z_neu^2)^1/2)
auf der sicheren Seite?
zu [2]:
Ich berechne einen Vektor s der Schnittgeraden OA und
erzeuge gleichzeitig -s, um den Schnittgeradenvektor
in beiden Richtungen vorrätig zu haben.
Dann muss ich anscheinend wählen, ob ich s oder -s
nehmen muss. Damit z, z_neu sowie OA ein rechtshändiges
Richtungstripel bilden, verstehe ich das so, dass diese
drei Vektoren einen Körper mit positivem Volumen aufspannen
müssen, das Spatprodukt also >0 sein muss. Hiermit kann ich
also den Richtungsvektor von OA festlegen (s oder -s).
Ist das soweit korrekt?
zu [3]:
diesen Satz verstehe ich nicht ganz. Wieso jetzt "theta", wenn
wir doch in b) über "psi" reden? Ansonsten: Richtungstripel ist
nach [2] verstanden.
zu [4]:
Wofür ist das wichtig? Wenn ich den Winkel analog zu [1] messe
(arccos), dann erhalte ich doch eh einen Winkel zwischen 0 und
Pi, oder?
zu [5]:
Wie sollte ich hier den Winkel berechnen?
Könnt Ihr durchblicken, ob diese Konvention für meinen Fall (s.o.)
geeignet ist oder seht Ihr Lücken, die man mit einem Algorithmus
nicht abdecken kann? Kennt Ihr ggf. eine andere, für mich geeignetere
Konvention? Falls Ihr noch andere Literaturquellen habt, gerne
hier anführen.
Vielen Dank für Eure Mühe.
Gruß,
Ingo
Hallo zusammen,
ich habe zwar schon einige interessante postings zum Thema
Eulerwinkel bei groups.google gefunden, aber mein Anliegen
trifft das noch nicht so ganz, daher hier meine Frage.
Ich habe folgende Anwendung:
Ich habe ein Ausgangs-Koordinatensystem (KS_alt) sowie ein
Ziel-KS (KS_neu). Beide sind rechtwinklig und rechtsdrehend.
Die Richtungsvektoren des KS_neu liegen bezogen auf das
KS_alt vor. Der Ursprung ist identisch, es handelt sich also
um reine Rotationen.
Innerhalb eines Berechnungsalgorithmus möchte ich nun unab-
hängig von der Lage des KS_neu eine eindeutige Eulermatrix
formulieren, mit der ich dann meine gewünschten Koordinaten-
Transformationen durchführen kann.
Dazu gibt es einige verschiedene Euler Konventionen (hier
sprach mal jemand von 24 verschiedenen, die Literaturquelle
"Graphics Gems" konnte ich über unsere Bib aber leider bisher
nicht beziehen).
Ich würde gerne eine Konvention verwenden, die mit der Information
der drei Richtungswinkel des KS_neu die Eulerwinkel eindeutig
festlegt.
Mit eindeutig meine ich in diesem Sinne, dass ich mich nicht um
Winkelvorzeichen, Zählrichtung von Winkeln und z.B. der Thematik
"cos(45°)=cos(-45°)" kümmern möchte, weil ich eine Berechnung
programmieren möchte, bei der ein zwischenzeitliches "scharfes
Hinsehen" einfach nicht möglich ist.
Daher erscheint mir die x-Konvention unter
http://mathworld.wolfram.com/EulerAngles.html
als ungeeignet.
Im Taschenbuch der Mathematik (Bronstein et al, 2.Auflage) habe ich
eine andere Konvention entdeckt (S. 179f).
+++Quote+++
Eulersche Winkel
Die Lage des neuen KS relativ zum alten kann mit Hilfe von drei
Winkeln, die Euler eingeführt hat, vollständig bestimmt werden.
a) Nutationswinkel theta wird der Winkel zwischen den positiven
Richtungen der z- und der z_neu-Achse genannt, er liegt in den
Grenzen 0 <= theta < Pi [1]
b) Präzessionswinkel psi wird der Winkel zwischen der positiven
Richtung der x-Achse und der Schnittgeraden OA zwischen der
x,y- und x_neu, y_neu - Ebene genannt. [2] Die positive Richtung
von theta wird derart gewählt, dass die z-Achse, die z_neu-Achse
sowie OA ein Richtungstripel mit der gleichen Orientierung bilden
wie die Koordinatenachsen. [3] Die Messung von psi erfolgt von der
x-Achse aus in Richtung y-Achse; die Grenzen sind 0 <= psi < Pi [4]
c) Drehungswinkel phi wird der Winkel zwischen der positiven
x_neu-Richtung und der Schnittgeraden OA genannt; er liegt in den
Grenzen 0 <= phi < 2Pi [5]
Setzen wir nun
c1=cos theta c2=cos psi c3=cos phi
s1=sin theta s2=sin psi s3=sin phi
dann ergibt sich folgende Eulermatrix A:
a11=c2*c3-c1*s2*s3 a12=-c2*s3-c1*s2*c3 a13=s1*s2
a21=s2*c3+c1*c2*s3 a22=-s2*s3+c1*c2*c3 a23=-s1*c2
a31=s1*s3 a32=s1*c3 a33=c1
+++Ende Quote+++
zu [1]:
bin ich hier mit
theta=arccos((vek_z*vek_z_neu)/(vek_z^2*vek_z_neu^2)^1/2)
auf der sicheren Seite?
zu [2]:
Ich berechne einen Vektor s der Schnittgeraden OA und
erzeuge gleichzeitig -s, um den Schnittgeradenvektor
in beiden Richtungen vorrätig zu haben.
Dann muss ich anscheinend wählen, ob ich s oder -s
nehmen muss. Damit z, z_neu sowie OA ein rechtshändiges
Richtungstripel bilden, verstehe ich das so, dass diese
drei Vektoren einen Körper mit positivem Volumen aufspannen
müssen, das Spatprodukt also >0 sein muss. Hiermit kann ich
also den Richtungsvektor von OA festlegen (s oder -s).
Ist das soweit korrekt?
zu [3]:
diesen Satz verstehe ich nicht ganz. Wieso jetzt "theta", wenn
wir doch in b) über "psi" reden? Ansonsten: Richtungstripel ist
nach [2] verstanden.
zu [4]:
Wofür ist das wichtig? Wenn ich den Winkel analog zu [1] messe
(arccos), dann erhalte ich doch eh einen Winkel zwischen 0 und
Pi, oder?
zu [5]:
Wie sollte ich hier den Winkel berechnen?
Könnt Ihr durchblicken, ob diese Konvention für meinen Fall (s.o.)
geeignet ist oder seht Ihr Lücken, die man mit einem Algorithmus
nicht abdecken kann? Kennt Ihr ggf. eine andere, für mich geeignetere
Konvention? Falls Ihr noch andere Literaturquellen habt, gerne
hier anführen.
Vielen Dank für Eure Mühe.
Gruß,
Ingo