Transformationsmatrix aus Einheitsvektor
-
Hallo,
Hat jemand eine optimierte Transformationsmatrix zur Hand, die benötigt wird, um den Vektor [1,0,0] nach einem beliebigen Einheitsvektor zu rotieren?
Was ich mir bisher hergeleitet habe sieht viel zu kompliziert aus.
Danke für Eure Hilfe!
-
Sorry, sollte natürlich im Matheforum landen.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Mathematik verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Um eine beliebige Achse? Oder um eine der koordinatenachsen?
-
Das ist keine übliche Rotation um einzelne Achsen.
Der variable Orientierungssvektor soll die Transformationsmatrix relativ zur Orientierung [1,0,0] beschreiben.
Für den Orientierungsvektor [1,0,0] währe die Transformationsmatrix dementsprechend die Einheitsmatrix.
Bei [-1,0,0] währe es die negierte Einheitsmatrix - usw.Bisher bin ich auf folgendes gekommen:
| x -y -z | | -z x+z²/(1+x) -yz/(1+x) | | z -yz/(1+x) x+y²/(1+x) |
Kennt jemand etwas weiter optimiertes?
-
Die negative Einheitsmatrix beschreibt keine Rotation, sondern eine Spiegelung. Falls das ein Fehler in deinem Beispiel ist und du tatsächlich nur an Rotationen interessiert bist, ist die Matrix jeweils eindeutig bestimmt.
-
Es ist eine Spiegelung, weil der variable Orientierungsvektor gespiegelt ist.
Die Rotation findet um die Normale der Ebene, die beide Vektoren beschreiben statt.Die obige Translationsmatrix bezieht sich auf den Basisorientierungsvektor [1,0,0].
-
Hab so' ne allgemeine Matrix gefunden:
Der Vektor a = (1,0,0) transformiert sich zu:|tx² + c |
|txy + sz |
|txz - sy |wobei r = (x,y,z) die Drehachse ist und c = cos(alpha), t = 1 - cos(alpha), s = sin alpha. Weiss nicht ob r normiert sein muss...
-
http://de.wikipedia.org/wiki/Rotationsmatrix
Meinst du das vielleicht?
-
Jover schrieb:
http://de.wikipedia.org/wiki/Rotationsmatrix
Meinst du das vielleicht?.. und wenn du die Rotationsmatrix um einen beliebigen Einheitsvektor nimmst, und diese mit (1,0,0)^T multiplizierst, kommst du genau auf mein Ergebnis ...