+1 Daumen
10,7k Aufrufe

Es gibt ja die drei Standard-Transformationsmatrizen Rx(θ) wie nachfolgend beschrieben:

\( R_{x}(\theta)=\left[\begin{array}{ccc}{1} & {0} & {0} \\ {0} & {\cos \theta} & {-\sin \theta} \\ {0} & {\sin \theta} & {\cos \theta}\end{array}\right] \)
\( R_{y}(\theta)=\left[\begin{array}{ccc}{\cos \theta} & {0} & {\cos \theta} \\ {\cos \theta} & {0} & {\sin \theta} \\ {0} & {1} & {0} \\ {-\sin \theta} & {0} & {\cos \theta}\end{array}\right] \)
\( R_{z}(\theta)=\left[\begin{array}{ccc}{\cos \theta} & {\cos \theta} & {0} \\ {\sin \theta} & {\cos \theta} & {0} \\ {0} & {0} & {1}\end{array}\right] \)

 

Die Multiplikation der Matrizen Rz*Ry*Rx ergibt die Rotation der roten Box (also erst 90° um x, dann 90° um y, dann 90° um z):

Bild Mathematik

Ich suche aber die Rotationmatrix der blauen Box, die alle drei Achsen gleichzeitig um 90° verdreht.

Avatar von

Nun - falls die drei Rotationswinkel gegeben sind, ist die Rotationsmatrix für die blaue Box das Produkt aus den einzelnen Rotationsmatrizen. Aber das hast Du schon in der Frage geschrieben.

Was ist denn gegeben? Aus welchen Informationen der blauen Box soll die Rotationsmatrix berechnet werden?

Hallo Werner-Salomon, vielen Dank für deine Antwort: Genauer geht es mir um den weißen Punkt, den möchte ich so rotieren, wie die blaue Box, nicht die rote Box. Ich habe wohl irgendwo einen Denkfehler.

Bild Mathematik Die rote Box wird erst um 90° um den Rx(90) rotiert, dann Ry(90), dann Rz(90). Der Punkt P befindet sich auf Koordinate P (0.5, 1.0, 1.5). Wenn ich ausrechne: Rz(90) * Ry(90) * Rx(90) * P, dann erhalte ich als Ergebnis den Punkt P_res = (1.5, 1.0, -0.5). Das ist der Punkt von der roten Box, nicht von der blauen.

Jetzt würde ich gerne wissen, wie ich die Transformationsmatrizen so multiplizieren kann, dass ich den Punkt um alle Achsen gleichzeitig rotieren kann. Das Ergebnis müsste so aussehen: R(90, 90, 90) = ~ (1.30 0.42 1.30).

Grund: In VRML gibt es dich Möglichkeit eine rotation durch Angabe von drei Punkten und einem Winkel durchzuführen. Dazu finde ich aber keine Rotationsmatrix, das das macht. Die obigen Rotationsmatrizen führen die Berechnung der roten Box durch, nicht der blauen.

Ich suche also die Transformationsmatrix für die Rotation um alle 3 Achsen gleichzeitig, nicht nacheinander.

Vielen Dank schonmal für dein Interesse/Mühe.

Die Position einer(!) Ecke reicht nicht aus, um die Lage des Quaders zu beschreiben. Man kann den Quader dann noch um die Achse rotieren, die durch den Ursprung und den gewählten Eckpunkt verläuft. Es fehlt also noch eine Information.

Der Quader liegt im Zentrum Ursprung und hat (x, y, z) = (1, 2, 3) Koordinaten.

Ich versteh die Antwort ehrlich gesagt nicht. Ich suche die Transformationsmatrix die die Rotation der blauen Box veranschaulicht. Der Quader ist nur ein Beispielobjekt. Egal ob Quader oder Punkt, wenn ich die Transformationsmatrix kenne, kann ich jeden Punkt der Welt rotieren.

Vektor rotieren und Quader rotieren ist nicht ganz dasselbe. Wenn man einen Vektor von einer Position in eine andere rotiert, so ist die dafür notwendige Rotationsmatrix nicht eindeutig.

Stelle Dir zwei Vektoren auf dem Mantel eines Kegels vor. Beide beginnen an der Kegelspitze und enden auf einem Kreis der senkrecht zur Kegelachse liegt. Eine mögliche Rotationsachse, die einen der Vektoren in den anderen überführt, ist die Kegelachse selbst. Wenn man sich aber eine Ebene denkt, die durch die beiden Vektoren aufgespannt wird, so ist auch eine Achse senkrecht zu dieser Ebene eine mögliche Rotationsachse. Und diese beiden Achsen sind i.A. nicht identisch.

Und damit gibt es auch zwei unterschiedliche Rotationsmatrizen - und beide überführen den einen Vektor in den anderen.

Bei einem Körper (z.B. Quader) ist das anders. Hier gibt es i.A. nur eine einzige Rotationsmatrix um eine Lage des Körpers in eine andere zu überführen.

Will sagen: es ist ein Unterschied, ob Du für einen Vektor und sein Bild (irgend)eine Rotationsmatrix suchst oder für mehrere Vektoren (z.B. die Ecken eines Quaders) und ihre Bilder eine gemeinsame(!) Rotationsmatrix.

Grundsätzlich brauchst Du drei Urbildpunkte und drei Bildpunkte - das macht 9 Gleichungen aus denen Du die Abbildungsmatrix berechnen kannst.

Ob das, was Du dann hast noch als Drehung durch geht wird sich zeigen....

Hi leute,

ich habe das gleiche Problem. Ich befasse mich gerade auch mit R3 Rotationen. Ich benutze die RotationsMatrizen zum ermitteln der Koordinaten. Bei einer Verdrehung um nur einer Achse ist alles ok. Sobald eine zweite, geschweige denn noch eine dritte hinzu kommt, passt gar nichts mehr.

Ich habe nun herausgfunden dass sich die Winkel bei zwei oder dreih Drehungen ändern. Verstehen kann ich das momentan aber nicht. Und berechnen schon gar nicht.

Z.B. Ich einen Punkt im R3 um Rz=1, Ry=4 und Rx=80 Grad drehen. Nun habe ich ein kleines Tool wo dies berechnet. Ist ja alles schön und gut. Aber ich will verstehen warum es folgende Rotationen anzeigt: Rz=3,766, Ry=-1,679 und Rx= -80,02 Grad.

Vieleicht kann mir jemand eine kleine "Erleuchtung" geben dass ich nicht so im dunkeln tappe.

MfG

Hallo hugoboss,

keiner von uns weiß, was Du für eine Tool benutzt und daher auch nicht, was es anzeigt. Und es ist rein technisch schwierig, auf zwei (oder mehr?) identische Kommentare zu antworten.

Besser wäre es, wenn Du eine neue Frage stellst und in dieser Frage steht es Dir dann frei per Link auf die bereits vorhandenen Fragen zu verweisen.

Einen Tipp habe ich für Dich: Führt man die von Dir beschriebenene Drehungen in dieser Reihenfolge durch, so ist \(3,76°\) der Winkel, den sich die neue X-Achse des gedrehten Systems unterhalb der ursprünglichen XY-Ebene befindet.

Ach ja - mit jeder Drehung ändern sich die Winkel. Natürlich, was dachtest Du denn!

Hallo Werner-Salomon,

sorry für meinen doppelten Kommentar.


Zu meinem Verständnisproblem:

Ich komme aus der Roboterbranche. Die arbeiten ja auch mit dreidimensionalen Koordinatensystemen. Ich will eine Basisverschiebung realisieren. die beiden Basen sind zueinander verdreht. Mit den steuerungseigenen Transformationstools kann man ohne weiteres diesen Basiswechsel durchführen.

Nun will ich aber ein kleines Programm in Visual Basic schreiben das mir diese Basisverschiebung auch berechnet. Wie ich schon in meinen Tests erfahren musste, langt es nicht die folgenden RotationsMatrizen der Reihe nach herzunehmen:

blob.png 

Die Translation kommt anschließend hinzu. Mit Excel habe ich mal die RotationsMatrizen erstellt um das ganze mal besser zu verfolgen.

blob.png Sobald mehr als eine Drehung benötigt wird habe ich falsche ergebnisse.


Kann mir jemand dabei helfen wie ich genau vorgehen muss?

Sorry, ich benutze natürlich diese Matrizenreihen:


blob.png

Hallo hugoboss,

ich kann Dir sicher heute Abend antworten; aber erzeuge bitte eine neue Frage und kopiere die beiden Kommentare dort hinein.

Und sage uns auch noch, woher Du weißt, dass die Ergebnisse falsch sind.

---

Follow up: https://www.mathelounge.de/529872/transformationsmatrix-rotation-drei-achsen-gleichzeitig

1 Antwort

0 Daumen

Danke, ich habe durch den User auf stackoverflow die Lösung gefunden: Es ist die Matrix hier: https://en.m.wikipedia.org/wiki/Rotation_matrix#Rotation_matrix_from_axis_and_angle

Avatar von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Mathelounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community