Quaternionen Rechnung < Gruppe, Ring, Körper < Algebra < Algebra+Zahlentheo. < Hochschule < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 19:04 Di 29.01.2008 | Autor: | d.liang |
Aufgabe | Die Rotationen um die X-Achse 180° und um die Y-Achse 180° sollen als eine einzige Rotation um die Achse [mm] \overrightarrow{a} [/mm] und den Winkel [mm] \alpha [/mm] ausgedrückt werden. Berechnen Sie [mm] \overrightarrow{a} [/mm] und [mm] \alpha. [/mm] |
In meinen Unterlagen habe ich folgendes stehen:
"Zwei Rotationen R1 und R2, die durch q1 und q2 repräsentiert werden, können wie folgt konkateniert werden. R = R1R2 und die Repräsentation ist q = q1q2."
Daraus entnehme ich, dass ich die beiden Rotationen einfach multiplizieren muss. Dazu hab ich diese Formel:
q ·q' = s ·s'−v ·v',v×v'+s ·v'+s' ·v
Also habe ich so losgelegt:
qx = [ 180, [mm] \pmat{ 1 \\ 0 \\ 0 } [/mm] ]
qy = [ 180, [mm] \pmat{ 0 \\ 1 \\ 0 } [/mm] ]
v [mm] \times [/mm] v' = [mm] \pmat{ 0 \\ 0 \\ 1 } [/mm]
s ·v' = [mm] \pmat{ 0 \\ 180 \\ 0 } [/mm]
s' ·v = [mm] \pmat{ 180 \\ 0 \\ 0 } [/mm]
Q = [ 180 * 180, [mm] \pmat{ 0 \\ 0 \\ 1 } [/mm] + [mm] \pmat{ 0 \\ 180 \\ 0 } [/mm] + [mm] \pmat{ 180 \\ 0 \\ 0 } [/mm]
= [ 32400, [mm] \pmat{ 180 \\ 180 \\ 1 } [/mm] ]
Somit sind
[mm] \alpha [/mm] = 32400 und [mm] \overrightarrow{a} [/mm] = [mm] \pmat{ 180 \\ 180 \\ 1 }
[/mm]
Wenn man das ganze nun noch in die Polarform wandelt, nach dieser Formel:
q = [mm] \parallel [/mm] q [mm] \parallel [/mm] * [mm] (\bruch{cos}{2} [/mm] + i * [mm] \bruch{sin}{2} [/mm] + j * [mm] \bruch{sin}{2} [/mm] + k * [mm] \bruch{sin}{2})
[/mm]
angewendet so:
[mm] \parallel [/mm] q [mm] \parallel [/mm] = [mm] \wurzel{32400² + 180² + 180² + 1²}
[/mm]
q = [mm] \parallel [/mm] q [mm] \parallel [/mm] * (cos(16200) + i * sin(16200) + j * sin(16200) + k * sin(16200))
So, das wärs. So hätte ich die Aufgabe gelöst, wobei ich nicht weiß, ob der letzte Schritt ins wandeln der Polarform noch nötig gewesen wäre...
Ich würde jetzt gerne wissen, ob ich da richtig rangegangen bin, oder ob das totaler Blödsinn war...
Vielen Dank schonmal!
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 04:19 Do 31.01.2008 | Autor: | Zneques |
Hallo,
Hmmm, 32400° um die Achse [mm] \vektor{180\\180\\1} [/mm] klingt nicht wirklich wahrscheinlich. Zumal 32400° auch noch ein Vielfaches von 360° sind. (32400°=90 volle Umdrehungen)
Durch Matrizenmultiplikation kann man schon erstmal sehen, dass 180° um [mm] \vektor{0\\0\\1} [/mm] rauskommen sollten.
Dein Fehler liegt bei der Umwandlung der Rotation in die Quaternionen.
[mm] q_x=[0,\vektor{1\\0\\0}] [/mm] , [mm] (0=cos(90°)=cos(\bruch{180°}{2}))
[/mm]
[mm] q_y=[0,\vektor{0\\1\\0}]
[/mm]
Ciao.
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 18:05 Do 31.01.2008 | Autor: | d.liang |
Vielen Dank schonmal, aber kannst du deine Lösung 180° um [mm] \pmat{ 0 \\ 0 \\ 1 } [/mm] nochmal etwas näher erklären?
Ich seh glaub ich grad den Wald vor lauter Bäumen nicht.
Ich hab ja deine Erklärung verstanden, wie man die Rotationen in Quaternionen überführt. Nur ich muss doch immernoch eine Quaternionenmultiplikation anwenden, um die beiden zu konkatenieren. Und dazu hab ich nach wie vor diese Formel hier:
q ·q' = s ·s'−v ·v',v×v'+s ·v'+s' ·v
Meine beiden Quaternionen sehen also so aus, wie du meintest:
qx = [ cos(90), [mm] \pmat{ 1 \\ 0 \\ 0 } [/mm] ]
qx = [ cos(90), [mm] \pmat{ 0 \\ 1 \\ 0 } [/mm] ]
Nur für das ausrechnen des Winkels bräuchte ich doch diese Formel:
s ·s'−v ·v'
und das ist doch immernoch
90 * 90 - [mm] \pmat{ 1 \\ 0 \\ 0 } [/mm] * [mm] \pmat{ 0 \\ 1 \\ 0 }
[/mm]
und da kommt nach wie vor was merkwürdiges bei mir raus
8100 - [mm] \pmat{ 0 \\ 0 \\ 0 } [/mm] = [mm] \pmat{ 8100 \\ 8100 \\ 8100 }
[/mm]
Was das denn ? Das kanns ja nicht sein. Ich bitte dringend um Aufklärung !!!
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 19:36 Do 31.01.2008 | Autor: | rainerS |
Hallo!
> Vielen Dank schonmal, aber kannst du deine Lösung 180° um
> [mm]\pmat{ 0 \\ 0 \\ 1 }[/mm] nochmal etwas näher erklären?
Du schreibst die Drehungen nicht als Quaternionen, sondern als 3-dimensionale Drehmatrizen:
[mm] \begin{pmatrix} 1 & 0 & 0 \\ 0 & -1 & 0 \\ 0 & 0 & -1\end{pmatrix} * \begin{pmatrix} -1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & -1\end{pmatrix} = \begin{pmatrix} -1 & 0 & 0 \\ 0 & -1 & 0 \\ 0 & 0 & 1\end{pmatrix} [/mm],
also eine Drehung um die z-Achse um den Winkel [mm] $\pi$.
[/mm]
> Ich seh glaub ich grad den Wald vor lauter Bäumen nicht.
>
> Ich hab ja deine Erklärung verstanden, wie man die
> Rotationen in Quaternionen überführt. Nur ich muss doch
> immernoch eine Quaternionenmultiplikation anwenden, um die
> beiden zu konkatenieren. Und dazu hab ich nach wie vor
> diese Formel hier:
>
> q ·q' = s ·s'−v ·v',v×v'+s ·v'+s' ·v
>
> Meine beiden Quaternionen sehen also so aus, wie du
> meintest:
>
> qx = [ cos(90), [mm]\pmat{ 1 \\ 0 \\ 0 }[/mm] ]
>
> qx = [ cos(90), [mm]\pmat{ 0 \\ 1 \\ 0 }[/mm] ]
>
> Nur für das ausrechnen des Winkels bräuchte ich doch diese
> Formel:
>
> s ·s'−v ·v'
>
> und das ist doch immernoch
>
> 90 * 90 - [mm]\pmat{ 1 \\ 0 \\ 0 }[/mm] * [mm]\pmat{ 0 \\ 1 \\ 0 }[/mm]
Dein s und $s'$ sind doch die Cosinus der Winkel, nicht die Winkel selber, also kommt da wieder 0 heraus. Damit ist der neue Drehwinkel [mm] $\gamma$ [/mm] wieder durch [mm] $\cos(\gamma/2) [/mm] = 0$ gegeben, also wieder [mm] $\pi$.
[/mm]
Viele Grüße
Rainer
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 19:32 Fr 01.02.2008 | Autor: | d.liang |
Soweit alles klar. Den Ansatz habe ich verstanden! Vielen Dank!
Aber das kann doch so nicht die Quaternionenrechnung sein, wenn ich die Rotationsachse mittels zwei Rotationsmatrizen ermittel, oder ? Wozu denn Quaternionenrechnung, wenn ich dann doch wieder die klassischen Rotationsmatrizen einsetze ?
In dieser geposteter Beispielaufgabe ergibt sich zufälligerweise gerade die Z-Achse als Rotationsachse. Aber was ist denn wenn ich nun in folgendem Beispiel dies hier hätte:
Rotation wieder um Rx und Ry aber diesmal bloß um den Winkel 90°
Wenn ich nun die Rotationsmatrizen aufstelle, sieht das so aus:
[mm] \pmat{ 1 & 0 & 0 \\ 0 & 0 & -1 \\ 0 & 1 & 0 } [/mm] * [mm] \pmat{ 0 & 0 & 1 \\ 0 & 1 & 0 \\ -1 & 0 & 0 } [/mm] = [mm] \pmat{ 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 }
[/mm]
Ich kann ja mein Ergebnis Quaternion nun schlecht so aufstellen:
q = [ cos(45), [mm] \pmat{ 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 } [/mm] ]
...oder wie ermittel ich aus der Ergebnisrotationmatrix nun meine Rotationsachse ?
An der ganzen Sache ist mir nach wie vor nicht klar geworden, wie ich mit meiner Formel für die Quaternionenmultiplikation umgehen muss. Mit der man diese Aufagbe ja wohl auch lösen könnte (eventuell sogar muss(?))
Also dieser hier:
q = [ s, [mm] \pmat{ x \\ y \\ z } [/mm] ]
q ·q' = s ·s'−v ·v',v×v'+s ·v'+s' ·v
Wenn ich diese Formel anwende komme ich nach wie vor auf sehr merkwürdige Ergebnisse. So steht dann etwa nur für den Winkel des Quaternions plötzlich ein Vektor da der so aussieht:
[mm] \pmat{ cos(60) \\ cos(60) \\ cos(60) }
[/mm]
da ich den Winkel mit einem Vektor multipliziere.
Ich wär weiterhin super dankbar über alle aufklärenden Tipps!!!
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 20:23 Fr 01.02.2008 | Autor: | rainerS |
Hallo!
> Soweit alles klar. Den Ansatz habe ich verstanden! Vielen
> Dank!
>
> Aber das kann doch so nicht die Quaternionenrechnung sein,
> wenn ich die Rotationsachse mittels zwei Rotationsmatrizen
> ermittel, oder ? Wozu denn Quaternionenrechnung, wenn ich
> dann doch wieder die klassischen Rotationsmatrizen einsetze
> ?
>
> In dieser geposteter Beispielaufgabe ergibt sich
> zufälligerweise gerade die Z-Achse als Rotationsachse. Aber
> was ist denn wenn ich nun in folgendem Beispiel dies hier
> hätte:
>
> Rotation wieder um Rx und Ry aber diesmal bloß um den
> Winkel 90°
>
> Wenn ich nun die Rotationsmatrizen aufstelle, sieht das so
> aus:
>
> [mm]\pmat{ 1 & 0 & 0 \\ 0 & 0 & -1 \\ 0 & 1 & 0 }[/mm] * [mm]\pmat{ 0 & 0 & 1 \\ 0 & 1 & 0 \\ -1 & 0 & 0 }[/mm]
> = [mm]\pmat{ 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 }[/mm]
>
> Ich kann ja mein Ergebnis Quaternion nun schlecht so
> aufstellen:
>
>
> q = [ cos(45), [mm]\pmat{ 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 }[/mm]
> ]
Wie du auf 45 kommst, ist mir schleierhaft.
> ...oder wie ermittel ich aus der Ergebnisrotationmatrix nun
> meine Rotationsachse ?
>
> An der ganzen Sache ist mir nach wie vor nicht klar
> geworden, wie ich mit meiner Formel für die
> Quaternionenmultiplikation umgehen muss. Mit der man diese
> Aufagbe ja wohl auch lösen könnte (eventuell sogar muss(?))
>
> Also dieser hier:
>
> q = [ s, [mm]\pmat{ x \\ y \\ z }[/mm] ]
>
> q ·q' = s ·s'−v ·v',v×v'+s ·v'+s' ·v
>
> Wenn ich diese Formel anwende komme ich nach wie vor auf
> sehr merkwürdige Ergebnisse. So steht dann etwa nur für den
> Winkel des Quaternions plötzlich ein Vektor da der so
> aussieht:
Wieso denn das? [mm] $s\cdot [/mm] s'$ ist kein Vektor, und [mm] $v\cdot [/mm] v'$ auch nicht.
Du hast: [mm]s=0[/mm], [mm]s'=0[/mm], [mm] $v=\vektor{1\\0\\0}$, [/mm] $v'= [mm] \vektor{0\\1\\0}$. [/mm] Daher ist [mm] $s\cdot [/mm] s'=0$, [mm] $v\cdot [/mm] v'=0$, und es bleibt nur $ [mm] v\times [/mm] v'= [mm] \vektor{0\\0\\1}$ [/mm] übrig. Das Ergebnis ist:
$ [mm] \left[ 0, \vektor{0\\0\\1} \right]$,
[/mm]
also eine Drehung um [mm] $\pi$ [/mm] um die z-Achse.
Viele Grüße
Rainer
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 22:08 Fr 01.02.2008 | Autor: | d.liang |
Ich danke dir Rainer, nun hab ich es entgültig verstanden :)
Habs eben mal in OpenGL nachprogrammiert und es funktioniert mit beliebigen anderen Winkel-Konkatenationen auch ... juhu!
|
|
|
|