Rot. eines Vektors übertragen < Matrizen < Lineare Algebra < Hochschule < Mathe < Vorhilfe
|
Status: |
(Frage) reagiert/warte auf Reaktion | Datum: | 16:46 Do 09.08.2012 | Autor: | Alterschwede |
Aufgabe | Hallo Leute,
ich habe folgendes Problem:
ich schreibe gerade ein Programm, bei der ich die dreidimensionale Drehung eines Vektors v0 auf einen anderen v1, auf einen Vektor v2 in einem anderen Koordinatensystem übertragen will.
Folgende Werte habe ich gegeben:
−v2 als Vektor und dessen Rotationsmatrix r2
−v0 und v1 jeweils als Vektoren und deren Rotationsmatritzen r0 und r1 |
Um das nochmal zusammenzufassen:
Die Differenz bzw. Rotation die v0 braucht um zu v1 zu werden möchte ich auf v2 übertragen. Die Länge des Vektors spielt dabei keine Rolle, nur die Rotation.
Ich habe überlegt, dass ich eine Rotationmatrix brauche, welche die Differenz von r0 und r1 beschreibt. Wie kann ich diese berechnen? Wenn ich sie habe müsste ich lediglich v2 von rechts mit der Matrix multiplizieren und ich hätte den Vektor.
Eine komplizierte Methode wäre es, die Rotationsmatrix zwischen v0 und v1 zu berechnen. Allerdings habe ich gesehen, dass dies nicht so einfach ist, weil der Vektor sich theoretisch um alle Einheitsachsen drehen kann.
Gibt es noch andere Methoden, die Drehung auf v2 zu übertragen?
Ich habe diese Frage auch in folgenden Foren auf anderen Internetseiten gestellt: http://www.onlinemathe.de/forum/Drehung-eines-Vektors-auf-einen-anderen-uebertragen
|
|
|
|
> Hallo Leute,
>
> ich habe folgendes Problem:
>
> ich schreibe gerade ein Programm, bei der ich die
> dreidimensionale Drehung eines Vektors v0 auf einen anderen
> v1, auf einen Vektor v2 in einem anderen Koordinatensystem
> übertragen will.
>
> Folgende Werte habe ich gegeben:
>
> −v2 als Vektor und dessen Rotationsmatrix r2
> −v0 und v1 jeweils als Vektoren und deren
> Rotationsmatritzen r0 und r1
Was verstehst du unter "der Rotationsmatrix eines Vektors" ?
> Um das nochmal zusammenzufassen:
>
> Die Differenz
ich könnte mir anstatt einer "Differenz" eher eine
Art "Quotient" (nämlich von geeigneten Rotations-
matrizen) vorstellen ...
> bzw. Rotation die v0 braucht um zu v1 zu
> werden möchte ich auf v2 übertragen. Die Länge des
> Vektors spielt dabei keine Rolle, nur die Rotation.
Dann dürften wir uns wohl einfach unter den [mm] v_i [/mm] lauter
Einheitsvektoren (Vektoren vom Betrag 1) vorstellen, oder ?
> Ich habe überlegt, dass ich eine Rotationmatrix brauche,
> welche die Differenz von r0 und r1 beschreibt. Wie kann ich
> diese berechnen? Wenn ich sie habe müsste ich lediglich v2
> von rechts ( ??? )mit der Matrix multiplizieren und ich hätte den
> Vektor.
>
> Eine komplizierte Methode wäre es, die Rotationsmatrix
> zwischen v0 und v1 zu berechnen. Allerdings habe ich
> gesehen, dass dies nicht so einfach ist, weil der Vektor
> sich theoretisch um alle Einheitsachsen drehen kann.
>
> Gibt es noch andere Methoden, die Drehung auf v2 zu
> übertragen?
LG Al-Chw.
|
|
|
|
|
Rotationsmatrix des Vektors ist folgendermaßen gemeint:
ich habe einen "Standardvektor" der immer gleich ist, z.B. (1,0,0). Von ihm kann man jetzt durch die Rotationsmatritzen r0 und r1 auf die Vektoren v0 und v1 kommen. Ich habe nur beides angegeben, damit man mehr Möglichkeiten und Ansätze hat.
Alles in allem möchte ich einfach nur die Rotation zwischen v0 und v1 auf auf v2 übertragen. Ich dachte es geht einfacher, wenn man bereits die Rotationsmatritzen hat, da ich sie sowieso gegeben habe.
Ich suche sozusagen die Rotationsmatrix die mir v0 auf v1 rotiert.
|
|
|
|
|
> Rotationsmatrix des Vektors ist folgendermaßen gemeint:
>
> ich habe einen "Standardvektor" der immer gleich ist, z.B.
> (1,0,0). Von ihm kann man jetzt durch die
> Rotationsmatritzen r0 und r1 auf die Vektoren v0 und v1
> kommen. Ich habe nur beides angegeben, damit man mehr
> Möglichkeiten und Ansätze hat.
>
> Alles in allem möchte ich einfach nur die Rotation
> zwischen v0 und v1 auf auf v2 übertragen. Ich dachte es
> geht einfacher, wenn man bereits die Rotationsmatritzen
> hat, da ich sie sowieso gegeben habe.
>
> Ich suche sozusagen die Rotationsmatrix die mir v0 auf v1
> rotiert.
Hallo Alterschwede,
übrigens noch herzlich
Ich bezeichne die Matrizen lieber mit Großbuchstaben und
nenne den Standard-Grundvektor einmal g.
Dann hast du also $\ [mm] R_0*g\ [/mm] =\ [mm] v_0$ [/mm] und $\ [mm] R_1*g\ [/mm] =\ [mm] v_1$ [/mm] , wobei [mm] R_0 [/mm] und
[mm] R_1 [/mm] orthogonale Matrizen sind.
Daraus folgt $\ [mm] v_1\ [/mm] =\ [mm] R_1*R_0^{-1}*v_0$
[/mm]
Die gesuchte Drehmatrix, welche [mm] v_0 [/mm] in [mm] v_1 [/mm] überführt,
wäre dann [mm] R:=R_1*R_0^{-1} [/mm] .
Um nun das Bild des neuen Vektors [mm] v_2 [/mm] unter dieser
Drehung zu erhalten, multipliziert man ihn von links
(falls man die übliche Schreibweise benützt, bei der die
Vektoren Spaltenvektoren sind) mit der Drehmatrix, also:
[mm] Bildvektor(v_2) [/mm] = [mm] R*v_2 [/mm] = [mm] R_1*R_0^{-1}*v_2
[/mm]
LG Al-Chwarizmi
|
|
|
|
|
Super, vielen Dank, ich werde das so probieren :)
mit dem multiplizieren von rechts habe ich genau das gemeint, also das der Vektor rechts von der Matrix steht bei der Multiplikation. Habe mich nur falsch ausgedrückt
|
|
|
|
|
> mit dem multiplizieren von rechts habe ich genau das
> gemeint, also das der Vektor rechts von der Matrix steht
> bei der Multiplikation. Habe mich nur falsch ausgedrückt
Einen Vektor v von rechts mit einer Matrix R zu multipli-
zieren, würde aber genau andersrum gehen:
Man schreibt den Vektor v hin und setzt dann die Matrix R,
mit welcher er multipliziert werden soll, rechts vom Vektor
daneben:
$\ v*R$
Wenn R eine [mm] 3\times3 [/mm] - Matrix ist, müsste der Vektor v
ein [mm] 1\times3 [/mm] - Zeilenvektor sein, damit dies klappt.
Aber eben:
lichtung
manche meinen
lechts und rinks
kann man nicht velwechsern
werch ein illtum
(Ernst Jandl)
LG Al-Chwarizmi
|
|
|
|