Rotation von Vektoren < Lineare Algebra < Hochschule < Mathe < Vorhilfe
|
Ich habe zwei Vektoren A und B im [mm] \IR^{3} [/mm] und einen Winkel [mm] \alpha [/mm] zwischen den beiden. Ziel ist es, Vektor A so zu drehen, dass er parallel zu B ist.
Dazu habe ich einen Vektoren X konstruiert, der senkrecht zu A und B ist und als Rotationsachse dienen soll. Danach habe ich A, B und X normiert, damit ich [mm] \alpha [/mm] einfach berechnen kann als
[mm]\alpha = acos(A \odot B)[/mm]
Die Rotation von A um X um den Winkel [mm] \alpha [/mm] löse ich über Multiplikation von A mit folgender 3x3 Matrix:
[mm] \begin{vmatrix}
tX^{2} + c & tXY - sZ & tXZ + sY \\
tXY + sZ & tY^{2} + c & tYZ - sX \\
tXZ - sY & tYZ + sX & tZ^{2} + c
\end{vmatrix}
[/mm]
[mm]
t = 1 - cos (\alpha); c = cos(\alpha); s = sin(\alpha)\quad
X, Y, Z = Komponenten\ der\ Rotationsachse
[/mm]
alles in allem war ich eigentlich der Meinung, dass das funktionieren sollte. Das Problem ist nun aber, dass nach der Drehung um [mm] \alpha [/mm] immer noch ein Winkel zwischen A und B liegt, woraus für mich folgt, dass das nicht funktioniert.
Wäre wirklich schön, wenn mir dabei jemand helfen könnte, denn langsam bin ich mit meinem Latein am Ende. Hab mir das ganze jetzt schon zigmal überlegt und verstehe einfach nicht, warum A und B nach der Drehung nicht parallel sind. Der Fehler, also der verbleibende Winkel zwischen A und B, kann fast jede beliebige Größe zwischen 0.irgendwas und 180° annehmen.
Danke für´s Lesen und für jeden Tip.
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 13:09 Fr 21.04.2006 | Autor: | leduart |
Hallo Clairvoyant
Deine Frage ist nicht eindeutig: willst du die allgemeine Abbildung des [mm] \IR{3} [/mm] wobei dann a nach B geht, oder nur a nach b drehen. für das zweite ist doch ne Matrix überflüssig, das geht mit Skalarprodukt.
Sonst musst du erst B auf me Achse drehen, dann um die Achse drehen und zurückdrehen, das ist der einfachst Weg. und die 3 matrizen multiplizieren!
gruss leduart
|
|
|
|
|
Ich glaube, es ist besser, wenn ich das vollständige Problem hier beschreibe. Sry, dass ich das nicht gleich gemacht habe.
Die Problemstellung ist folgende:
Ich suche einen Algorithmus, der mir 3 Drehwinkel [mm] \alpha, \beta [/mm] und [mm] \gamma [/mm] berechnet, die folgendes erfüllen:
Das Anfangs"koordinatensystem" bestehend aus X1 = (1 0 0), Y1 = (0 1 0) und Z1 = (0 0 1) soll zuerst um den Winkel [mm] \alpha [/mm] um Y1 gedreht werden, daraus entstehen X2, Y2 und Z2, wobei Y2 = Y1.
X2,Y2 und Z2 sollen danach um X2 um den Winkel [mm] \beta [/mm] gedreht werden, was X3,Y3 und Z3 ergibt, wobei X3 = X2.
Schließlich werden X3,Y3 und Z3 um den Winkel [mm] \gamma [/mm] um Y3 gedreht, was X4, Y4 und Z4 ergibt. Nach diesen 3 Drehungen sollen X4,Y4 und Z4 parallel zu 3 orthogonalen Vektoren U,V und W sein.
Kurz gesagt suche ich die 3 Winkel für eine Eulerdrehung nach YX'Y'', die das "normale" Koordinatensystem X1,Y1 und Z1 nach einem "Ziel-"Koordinatensystem U,V,W ausrichten.
Dazu gehe ich bisher folgendermaßen vor:
- Zuerst projeziere ich V (die Y-Achse des Zielsystems) auf die XZ-Ebene und berechne den Winkel zwischen X1 und dem orthogonalen Vektor zu dieser Projektion in der XZ-Ebene. Das ist mein Drehwinkel [mm] \alpha.
[/mm]
Nach der Drehung um [mm] \alpha [/mm] sollte X2 orthogonal zu V und zu Y2 sein.
- Nun berechne ich den Winkel [mm] \beta [/mm] zwischen V und Y2 und drehe um die X2 Achse. Nach dieser Drehung sollte nun Y3 parallel zu V sein (die Y-Achsen sind parallel). Damit ist Y3 auch orthogonal zu U,V, X3 und Z3.
- Der letzte Schritt ist nun den Winkel [mm] \gamma [/mm] zwischen X3 und U zu berechnen. Zur Überprüfung der Ergebnisse rotiere ich auch noch um [mm] \gamma [/mm] um Y3.
X4, Y4 und Z4 sollten nun parallel zu U,V und W sein.
So weit die Theorie. Der Grundgedanke ist, dass ich zwei Vektoren parallel bekomme, indem ich die Normale der Ebene, die von diesen beiden Vektoren aufgespannt wird, als Drehachse verwende und einfach um den Winkel zwischen den beiden Vektoren drehe. Zumindest sollte das laut meinem räumlichen Vorstellungsvermögen funktionieren.
Allerdings habe ich den Verdacht, dass die Funktion für die Rotation um eine beliebige Achse fehlerbehaftet ist.
Trotzdem wäre es nett, wenn Ihr Euch meinen "Plan" durchlest und mir evtl Fehler darin aufzeigt, morgen werde ich mich nochmal an die Rotationsfunktion machen.
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 17:53 Sa 22.04.2006 | Autor: | leduart |
Hallo clairvoyant
Ich hab nicht verstanden, ob du aus irgen nem Grund wirklich die drei Winke brauchst, oder ob es dir nur drum geht, X,Y;Z nach U;V;W zu bringen. das zweite ist ja sowas wie ein einfacher Basiswechsel, Die Matrix mit den Einheitsvektoren U,V,W als Spalten tut genau das!
Dien Weg dazu scheint mir nicht falsch, aber ungeheuer kompliziert!
Gruss leduart
|
|
|
|
|
Wie in meinem Post steht: Ich suche die 3 Winkel, die das erfüllen. Ein einfacher Basiswechsel reicht nicht aus, da ich die 3 Winkel nachher in eine Datei exportieren muss.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 01:20 Di 25.04.2006 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|