Rotationsmatrix aus zwei Vektoren

Neue Frage »

tracer00 Auf diesen Beitrag antworten »
Rotationsmatrix aus zwei Vektoren
Hallo,

ich habe folgendes Problem:

Gegeben sind zwei Vekroren gleicher Länge mit . Gesucht ist die Rotationsmatrix , die zu rotiert:


Dabei gelten verschiedene Nebenbedingungen:
1. (Vektoren sind gleich lang)
2. (Matrix ist orthogonal)
3. (zusammen mit 2. folgt Matrix ist Rotationsmatrix)


Für den zweidimensionalen Fall lässt sich der Winkel bestimmen, die Drehachse ist dabei durch die zur Ebene senkrechte Achse (z) gegeben, im dreidimensionalen fehlt mir bisher ein Ansatz. Es wäre allerdings schön, wenn es eine allgemeine Lösung für und gäbe, denn das ganze soll später implementiert werden.


Ich bin dankbar für jeden Hinweis,
Markus
tracer00 Auf diesen Beitrag antworten »

Bin schon selber etwas weiter gekommen:
Die Drehachse im ergibt sich ja durch das Kreuzprodukt der Vektoren. Dann muss man nur noch den Winkel bestimmen. Leider reicht es dabei nicht, den Winkel, der sich durch das Skalarprodukt ergibt, zu betrachten, denn man benötigt den "absoluten" Winkel im Intervall von 0 bis 2Pi.

Markus
Raumpfleger Auf diesen Beitrag antworten »

Der "absolute" Winkel ergibt sich elementar aus der Tatsache, dass die beiden Vektoren a, b ein gleichschenkliges Dreieck bilden. Da kann man die Länge der 3. Seite ausrechnen, davon die Hälfte nehmen (Gegenkathete) und sich erinnern (in einem dann rechtwinkligen Dreieck), das tan(s/2) = |Gegenkathete|/|Ankathete|, s ist der Drehwinkel. Schliesslich verwendet man den arcus tangens und multipliziert das Ergebnis mit 2.
Mathebastler Auf diesen Beitrag antworten »
Drehmatrix aus zwei Vektoren in R hoch N
Erstens: Die ist eindeutig. Man gehe in die 2D Ebene, die durch die beiden Vektoren aufgespannt wird. Die ist eindeutig. Dort gibt es einen eindeutigen Winkel, den die Vektoren bilden. Der ist auch eindeutig.
Um den muss man in dieser Ebene drehen

So geht dann auch die Lösung; habe zufällig gerade danach gesucht. Bei mir heißt der erste Vektor v und der zweite Vektor w. Ich hab es hier in Matlab-Notation aufgeschrieben für 3D:

vn = v/norm(v)
wn = w/norm(w)
w1 = wn-(wn'*vn)*vn % durch den Abzug kriegt man die Achse orthogonal zu vn
w1n = w1/norm(w1) % orthogonal zu v1n, spannt die Ebene auf, in der rotiert wird
z = cross(w,v) % Kreuzprodukt 3. Achse, da tut sich nichts
c = w'*v % cosinus des Drehwinkels
s = norm(z) % sinus des Drehwinkels
z1 = z/norm(z);

mat1= [v w1 z]; % Basisvektoren des Systems in dem gedreht wird = Rot Matrix aus diesem
% Systemzurück ins Ausgangssystem
rotcore =[[c -s 0];[s c 0]; [0 0 1]]; % Rotationsmatrix im System der Ebene der Vektoren v und w

rotmat = mat1*rotcore*mat1' % Gesamte Drehmatrix

rotmat*v % Test: da kommt dann w raus

Man dreht also erst in die Ebene beider Vektoren, da macht macht man eine 2D Drehung um den Winkel, und dan dreht man wieder zurück ins Ausgangssystem. So kriegt man die Rotationsmatrix als Produkt dreier Drehmatrizen.
Mathebastler Auf diesen Beitrag antworten »
RE: Drehmatrix aus zwei Vektoren in R hoch N
Oops hätte heißen müssen


mat1= [v w1 z1];

(Soll ja orthonormal sein, z1 ist auf 1 normiert.)
Mathebastler Auf diesen Beitrag antworten »
RE: Drehmatrix aus zwei Vektoren in R hoch N
Noch mehr zu berichtigen (ich hatte zuerst die Vektoren direkt normiert), auch die erste Korrektur kommt nochmal dran. Also, es muss an noch mehr Stellen vn, wn oder z1 statt v, w, oder z heißen.
Das sind dann immer die entsprechenden auf 1 normierten Größen. Hier sind die Korrekturen:

c =wn'*vn
z = cross(wn,vn)
mat1= [vn wn z1]

Man soll nie im letzten Moment noch mal was umnennen. War mein Fehler. Sorry.
 
 
Hallodri Auf diesen Beitrag antworten »
Rotationsmatrix
Ein Versuch die Komponenten der Rotationsmatrix zu bestimmen:















9 Gleichungen, 9 Unbekannte:












---
6 Gleichungen , 6 Unbekannte









---











---






Lösungen:
1. Quadratische Gleichung zur Berechnung von r_12:






2. Berechnung von r_11 aus r_12:


3. Berechnung von r_13 aus r_11 und r_12:


4. r_21


5. Berechnung von r_22 aus r_12:


6. Berechnung von r_23 aus r_12 und r_22:


7. r_31


8. r_32


9. r_33 aus r_13 und r_23
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »