|
|
Rotationsmatrizen - Drehung eines Vektors um beliebige Achse |
|
Benni939 |

Forum-Newbie
|
 |
Beiträge: 9
|
 |
|
 |
Anmeldedatum: 20.02.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.06.2018, 16:07
Titel: Rotationsmatrizen - Drehung eines Vektors um beliebige Achse
|
 |
Hallo,
mittels Rotationsmatrizen drehe ich einen Vektor n um eine beliebig im Raum angeordnete Achse mit Richtungsvektor d.
Rechne ich nun den Winkel zwischen dem gedrehten Vektor und dem originalen Vektor aus, so müsste sich doch genau mein gewünschter Drehwinkel ergeben.
Erkennt Ihr ein Problem in der Umsetzung mit Matlab oder liegt ein mathematischer (Denk)Fehler vor?
Die Abweichung zwischen dem Solldrehwinkel und dem berechneten Drehwinkel phi_ist hängt stark ab vom gewählten Vektor n.
Ich danke Euch für Hinweise.
Viele Grüße
Benni
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 22.06.2018, 16:23
Titel: Re: Rotationsmatrizen - Drehung eines Vektors um beliebige A
|
 |
Hallo Benni939,
Das ist ein Denkfehler. Drehe z.B. den Einheitsvektor [1,0,0] um 157 Grad um die X-Achse. Das ändert den Vektor natürlich nicht und der Winkel zwischen den beiden Vektoren ist 0 Grad, nicht 157. Anderes Beispiel ist ein Vektor, der um 1 Grad vom Einheitsvektor in X-Richtung abweicht. Drehe ihn um 180 Grad um die X-Achse. Dann ist der Winkel zwischen den beiden Vektoren 2 Grad, nicht 180.
Den Dreh-Winkel wirst Du erst dann finden, wenn Du beide Vektoren in die Ebene projizierst, die senkrecht zur Dreh-Achse liegt.
Hier ist eine Funktion zum erzeugen der Dreh-Matrix: https://www.mathworks.com/matlabcen.....=8946659&tab=function
Oder falls nur der 3D-Fall benötigt wird:
Dann ist der rotierte Vektor:
Gruß, Jan
|
|
|
Benni939 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 9
|
 |
|
 |
Anmeldedatum: 20.02.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.06.2018, 17:46
Titel:
|
 |
Richtig, danke, Jan.
Das habe ich bei der Verallgemeinerung meines Problems übersehen, denn meine Vektoren n sind eigentlich bereits Normalenvektoren zur Drehachse n. Dann müsste die Überprüfung des Drehwinkels doch eigentlich so funktionieren wie von mir oben genannt.
Deine Beispiele schaue ich mir noch an.
Gruß und ein schönes Wochenende
Benni
|
|
|
Benni939 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 9
|
 |
|
 |
Anmeldedatum: 20.02.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.06.2018, 10:00
Titel:
|
 |
Hallo Jan,
mit dem von Dir geposteten Code (bei mir ist nur der 3D-Fall relevant) funktioniert alles perfekt. Vielen Dank.
Grundsätzlich würde sich noch die Frage stellen, warum bei den beiden Herangehensweisen noch eine Differenz von 0,7 ° zwischen den berechneten Vektoren n auftritt.
Viele Grüße
Benni
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 26.06.2018, 11:43
Titel:
|
 |
Hallo Benni939,
Schwer zu sagen. Poste bitte den Code, mit dem Du diese Abweichung erhältst.
Gruß, Jan
|
|
|
Benni939 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 9
|
 |
|
 |
Anmeldedatum: 20.02.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.06.2018, 16:18
Titel:
|
 |
So sieht der zugehörige Code mit Beispielvektoren aus.
Mit dem 1. Ansatz ergeben sich statt der gewünschten 45 ° Verdrehwinkel nur 39,37 °, beim 2. Ansatz sind es tatsächlich 45 °.
Viele Grüße
Benni
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 26.06.2018, 16:59
Titel:
|
 |
Hallo Benni939,
Erkläre noch mal, wie Du auf die erste Formel kommst.
Gruß, Jan
|
|
|
Benni939 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 9
|
 |
|
 |
Anmeldedatum: 20.02.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 27.06.2018, 10:06
Titel:
|
 |
Hallo Jan,
die Formel bzw. Herangehensweise ist http://www-lehre.inf.uos.de/~cg/2010/PDF/kap-13.pdf (Rotation um eine beliebige Achse) entnommen, wobei ich davon ausging, dass die dort angegebenen Rotationsmatrizen den Matlab-Funktionen rotx, roty und rotz entsprechen.
Viele Grüße
Benni
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 27.06.2018, 14:58
Titel:
|
 |
Hallo Benni939,
"rotx(-atan(d(2)/d(3))*180/pi)*...% Zurückdrehen um x-Achse"
Das klingt verdächtig: |rotx| ist eine Drehung um die X-Achse, damit kann man also die X-Achse nirgendwohin drehen.
Ich denke, hier ist ein Bug im Code, weiß aber nicht genau, wo er ist. Ich sehe auch keine eindeutige Zuordnung zwischen dieser Formel und dem geposteten Paper.
Gruß, Jan
|
|
|
Benni939 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 9
|
 |
|
 |
Anmeldedatum: 20.02.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 27.06.2018, 15:26
Titel:
|
 |
Hallo Jan,
danke für Deine Mühe. Naja, das Wichtigste war ja, eine funktionierende Lösung zu haben.
Viele Grüße
Benni
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|