Auswahl Aktion im Forum Suche Kontakt Für Mitglieder Mathematisch für Anfänger Wer ist Online | |
| Autor |
Rotationsmatrix gesucht |
|
MuhCow
Junior  Dabei seit: 26.10.2006 Mitteilungen: 12
Aus:
 |     Themenstart: 2012-08-08 19:42
|
Hallo,
ich habe folgendes Problem:
Ich habe zwei kartesische Koordinatensysteme (Achsen: x,y,z und x',y',z') mit dem selben Ursprung.
Das gestrichene System geht aus dem ungestrichenen durch eine Drehung hervor, die Drehung vom gestrichenen in das ungestrichene System soll durch eine Rotationsmatrix beschrieben werden, damit diese später auf Vektoren im Koordinatensystem angewandt werden kann.
Dabei sind nur die Winkel zwischen den jeweiligen x und x', y und y' und z und z' Achsen bekannt. Dadurch weiß ich ja wie das Koordinatensystem im Raum liegt. Allerdings bin ich nicht fähig diese Lage durch eine Rotation in die Ursprungslage zurückzuversetzen.
Kann mir bitte jemand einen Tipp gehen wie ich da heranzugehen habe, ich stehe leider hier voll auf dem Schlauch.
[ Nachricht wurde editiert von MuhCow am 09.08.2012 08:49:09 ]
|
Profil
Quote
Link |
WebFritzi
Aktiv  Dabei seit: 12.10.2004 Mitteilungen: 2089
Aus: Berlin
 |     Beitrag No.1, eingetragen 2012-08-09 15:28
|
2012-08-08 19:42 - MuhCow im Themenstart schreibt:
Dabei sind nur die Winkel zwischen den jeweiligen x und x', y und y' und z und z' Achsen bekannt.
Sollte das nicht nur ein einziger Winkel sein?
|
Profil
Quote
Link |
MuhCow
Junior  Dabei seit: 26.10.2006 Mitteilungen: 12
Aus:
 |     Beitrag No.2, vom Themenstarter, eingetragen 2012-08-10 11:29
|
Nein, es sind 3 verschiedene Winkel. Ich weiß ja nicht wie gedreht wurde, sondern ich kenne den Endzustand und möchte diesen wieder auf das Ursprungskoordinatensystem zurücksetzen.
|
Profil
Quote
Link |
Algebrax
Senior  Dabei seit: 20.03.2012 Mitteilungen: 597
Aus: Österreich
 |     Beitrag No.3, eingetragen 2012-08-10 17:52
|
Hallo, MuhCow!
Du könntest von der allgemeinen Form einer Rotationsmatrix des IR^3, die du hier findest, ausgehen, den Anforderungen entsprechend ein Gleichungssystem für die Parameter aufstellen und lösen. Soweit ich gesehen habe, wird die Rotationsmatrix i.A. nicht eindeutig bestimmt sein.
EDIT: Ich habe, glaub ich, grad gesehen, woran die Mehrdeutigkeit der Lösung liegt, nämlich daran, dass ich nur mit den Beträgen der Winkel gerechnet habe. Sind zusätzlich noch die Vorzeichen der Winkel gegeben, sollte die Lösung schon eindeutig sein, wie auch die Anschauung vorgibt.
Mit lieben Grüßen,
Alex
[ Nachricht wurde editiert von Algebrax am 10.08.2012 18:10:43 ]
|
Profil
Quote
Link |
MuhCow
Junior  Dabei seit: 26.10.2006 Mitteilungen: 12
Aus:
 |     Beitrag No.4, vom Themenstarter, eingetragen 2012-08-10 19:32
|
Hallo Algebrax :),
danke für deine Antwort, ich verzweifle hier schon.
Nach einer weiteren suche nach einer allgemeinen Rotationsmatrix bin ich auf:
www.3dsource.de/deutsch/3Dmathe.htm
gestoßen, wo Gleichung 20 eine Rotation des Koordinatensystems um einen Winkel phi um eine vorgebene Achse durchführt.
Wenn ich das richtig begriffen habe, sollte mir das doch eine Beziehung zu den Winkeln geben, die zwischen den x-x', y-y' und z-z' Achsen liegen. Allerdings ist mir nicht klar wie diese Beziehung aussieht.
|
Profil
Quote
Link |
Algebrax
Senior  Dabei seit: 20.03.2012 Mitteilungen: 597
Aus: Österreich
 |     Beitrag No.5, eingetragen 2012-08-10 20:33
|
Ja, und das ist im Wesentlichen auch die Rotationsmatrix, die im Wikipedia-Artikel steht. Die vierte Koordinate wird ja nur aus formalen Gründen verwendet (steht relativ am Anfang erklärt).
Wenn man erst mal diesen Ansatz hat, ist der Rest reine Rechenarbeit; du musst nur noch allgemein die Winkel (bzw. deren Cosinus-Werte) zwischen den kanonischen Einheitsvektoren und ihren Bildern unter der Matrix berechnen, mit den gegebenen Werten gleichsetzen und das Gleichungssystem lösen. Zur Winkelberechnung gibt es ja diese Formel.
Mit lieben Grüßen,
Alex
|
Profil
Quote
Link |
Buri
Senior  Dabei seit: 02.08.2003 Mitteilungen: 34700
Aus: Dresden
 |     Beitrag No.6, eingetragen 2012-08-10 22:38
|
Hi MuhCow,
ich habe das Problem untersucht und dabei folgendes festgestellt:
 
- Es gibt nicht immer Lösungen. - Wenn es Lösungen gibt, dann müssen die drei gegebenen Winkel \b_1\,\b_2 und \b_3 die Ungleichung cos(\b_1)+cos(\b_2)+cos(\b_3)>=-1 erfüllen. - In diesem Fall ist der Drehwinkel \a\in [0,\p] der gesuchten Drehung durch die Gleichung cos(\a)=(cos(\b_1)+cos(\b_2)+cos(\b_3)-1)/2 eindeutig bestimmt. - Die Richtung der Drehachse wird durch einen Vektor der Form (+-sqrt(cos(\b_1)-cos(\a));+-sqrt(cos(\b_2)-cos(\a));+-sqrt(cos(\b_3)-cos(\a))) geliefert, und es gibt keine Lösungen, wenn hier eine Wurzel aus einer negativen Zahl vorkommt.
Alle 8 Drehmatrizen, die man durch sämtliche möglichen Kombinationen der drei Vorzeichen erhält, sind Lösungen der Aufgabe. In speziellen Fällen können natürlich einige dieser Drehungen zusammenfallen, das geschieht dann, wenn die Drehachse in der x-y-, x-z- oder y-z-Ebene liegt oder wenn der Drehwinkel 180° beträgt.
Man kann also im allgemeinen nicht mit einer eindeutigen Lösung des Problems rechnen, das liegt daran, dass zu jeder Drehung d, die die Aufgabe löst, auch die inverse Drehung d-1 eine Lösung ist, und dass mit den 180°-Drehungen dx, dy und dz um die x-, y- bzw. z-Achse die Verknüpfungen dx*d*dx, dy*d*dy und dz*d*dz ebenfalls Lösungen sind, auf diese Weise kommen also die 8 Lösungen zustande.
Gruß Buri
[ Nachricht wurde editiert von Buri am 11.08.2012 08:19:43 ]
[ Nachricht wurde editiert von fed am 11.08.2012 09:34:14 ]
|
Profil
Quote
Link |
StefanVogel
Senior  Dabei seit: 26.11.2005 Mitteilungen: 1444
Aus: Raun
 |     Beitrag No.7, eingetragen 2012-08-11 08:30
|
Profil
Quote
Link |
Buri
Senior  Dabei seit: 02.08.2003 Mitteilungen: 34700
Aus: Dresden
 |     Beitrag No.8, eingetragen 2012-08-11 09:33
|
Hi StefanVogel,
richtig, vielen Dank. Du hast den Vorzeichenfehler erkannt, ich korrigiere das. Es konnte so, wie es vorher dastand, nicht stimmen, weil dann Drehwinkel α = 180° gar nicht möglich wären, sie kommen aber vor.
Gruß Buri
|
Profil
Quote
Link |
Nocks
Junior  Dabei seit: 10.08.2012 Mitteilungen: 8
Aus: Tirol
 |     Beitrag No.9, eingetragen 2012-08-11 13:23
|
Hallo MuhCow
du kannst diese Aufgabe lösen indem du die Eulerwinkel berechnest.
der Algorithmus dafür funktioniert wie folgt:
1) Bestimme die Schnittgerade f zwischen [x,y]und[x',y']
der winkel zwischen x und f nennen wir
2) Drehe nun x richtung f um . Die Bilder von x,y,z nenen wir nun f,g,h. Es liegen jetzt h,z' und y in einer ebene normal zu f
3) durch eine Drehung um f kann z' mit h zur Deckung gebracht werden ... diesen Drehwinkel nenen wir
4) Eine Drehung um h bring g mit y' zur deckung --> den winkel nennen wir
Die winkel sind die Euler Winkel
Die Reihenfolge in der wir gedreht haben war z-x-z
Das heißt wenn du jetzt eine Rotationsmatrix mit um die z-Achse, eine Rotationsmatrix mit um die x-Achse und noch eine Rotationsmatrix um die z-Achse mit dem Winkel machst und alle miteinander multiplizierst, hast du deine gesuchte Rotationsmatrix.
Allerdings gibt es bei dieser Variante bestimmte Winkel für die dies nicht funktioniert --> Parametrisierungssingularitäten.
lg
Nocks
|
Profil
Quote
Link |
StefanVogel
Senior  Dabei seit: 26.11.2005 Mitteilungen: 1444
Aus: Raun
 |     Beitrag No.10, eingetragen 2012-08-11 13:42
|
Hallo Nocks,
bei Schritt 1) sind aber x' und y' für die Bestimmung der Ebene [x',y'] nicht bekannt. Laut Aufgabe sind nur die Winkel zwischen x und x', y und y', z und z' gegeben und nicht die Lage von x', y', z'.
|
Profil
Quote
Link |
MuhCow
Junior  Dabei seit: 26.10.2006 Mitteilungen: 12
Aus:
 |     Beitrag No.11, vom Themenstarter, eingetragen 2012-08-11 19:12
|
Hallo Buri, StefanVogel und Nocks,
ich danke euch sehr für eure Beiträge und werde damit arbeiten.
Es ist interssant zu wissen das es nicht für alle vorgegebenen Winkel Lösungen gibt. Das habe ich gar nicht erwartet.
Wie kommt man eigentlich auf diese Lösung Buri? Also auf diesen Weg? Ich habe sehr lange darüber nachgedacht und bin nicht darauf gekommen.
Sicher ist das sehr viel zu erklären, dennoch wäre ich sehr an einer Erklärung interessiert. Es wäre toll es zu verstehen.
Danke!
[ Nachricht wurde editiert von MuhCow am 11.08.2012 19:14:38 ]
|
Profil
Quote
Link |
Buri
Senior  Dabei seit: 02.08.2003 Mitteilungen: 34700
Aus: Dresden
 |     Beitrag No.12, eingetragen 2012-08-11 19:43
|
2012-08-11 19:12 - MuhCow in Beitrag No. 11 schreibt:
Wie kommt man eigentlich auf diese Lösung Buri? Also auf diesen Weg? Hi MuhCow,
die erste Erkenntnis, nämlich dass man den Drehwinkel ausrechnen kann, hatte ich ziemlich schnell.
Bei einer Drehmatrix im dreidimensionalen Raum, die eine Drehung um den Winkel α angibt, ist die Spur der Matrix, also die Summe ihrer Diagonalelemente, gleich 2 cos(α) + 1.
Das stimmt für Drehungen um die z-Achse, und weil die Spur einer linearen Abbildung unabhängig vom Koordinatensystem definiert werden kann und somit immer denselben Wert ergibt, ist das immer so.
Die weiteren Ergebnisse habe ich durch eine längere Rechnung erhalten, ich habe einen der beiden Durchstoßpunkte der Drehachse durch die Einheitskugel betrachtet und festgestellt, dass man für den Abstand dieses Durchstoßpunktes von den Koordinateneinheitsvektoren (1,0,0) und (0,1,0) und (0,0,1) eine Gleichung herleiten kann, die im allgemeinen zwei Lösungen zuläßt (das liegt vor allem daran, dass es noch einen zweiten Durchstoßpunkt gibt), und dann habe ich das Gleichungssystem für den Durchstoßpunkt aufgestellt und einfach zu Ende gerechnet.
Gruß Buri
|
Profil
Quote
Link |
MuhCow
Junior  Dabei seit: 26.10.2006 Mitteilungen: 12
Aus:
 |     Beitrag No.13, vom Themenstarter, eingetragen 2012-08-11 20:56
|
Buri: respekt,
und danke.
|
Profil
Quote
Link |
milch
Aktiv  Dabei seit: 23.02.2009 Mitteilungen: 297
Aus:
 |     Beitrag No.14, eingetragen 2012-08-12 18:33
|
es ist zwar nicht mein Thread aber mich interessiert die Frage auch.
Buri, könntest du vielleicht etwas genauer beschreiben wie du auf die Gleichungen gekommen bist.
Mir gelingt es nichtmal eine Beziehung zwischen den Winkeln zwischen den Achsen und dem von dir genannten Abstand der Rotationsachse zu den Achsen herzuleiten.
Ich habe immerhin schon herausgefunden, dass die x und die x' Achse den gleichen Abstand zur Drehachse haben müssen, das gleiche gilt für die anderen Achsen. Weiter bin ich aber nicht gekommen.
|
Profil
Quote
Link |
Buri
Senior  Dabei seit: 02.08.2003 Mitteilungen: 34700
Aus: Dresden
 |     Beitrag No.15, eingetragen 2012-08-12 21:12
|
2012-08-12 18:33 - milch in Beitrag No. 14 schreibt:
... etwas genauer beschreiben wie du auf die Gleichungen gekommen bist. Hi milch,
hier sind die Einzelheiten meiner Rechnung.
 
Es seien +-(a;b;c) die Durchstoßpunkte der gesuchten Drehachse durch die Einheitssphäre und \a der Drehwinkel, der aus der Gleichung 2*cos(\a)+1=cos(\b_1)+cos(\b_2)+cos(\b_3) bestimmt werden kann, sofern die rechte Seite >=-1 ist, dies ist eine notwendige Lösbarkeitsbedingung. Weiter seien \f_1\,\f_2 und \f_3 die als Bögen auf der Kugeloberfläche gemessenen Abstände von (a;b;c) zu den Einheitsvektoren (1;0;0), (0;1;0) und (0;0;1). Die euklidischen Abstände sind dann 2*sin(\f_k/2) mit k=1,2,3. Die Abstände dieser Einheitsvektoren von der Drehachse sind dann sin(\f_1), sin(\f_2) und sin(\f_3), und bei dem Drehvorgang beschreiben die drei Punkte Kreisbögen auf der Kugeloberfläche mit diesen Radien. Der euklidische Abstand vom Anfangspunkt (1;0;0), (0;1;0) bzw. (0;0;1) zum jeweiligen Endpunkt nach der Drehung beträgt dann 2*sin(\a/2)*sin(\f_k) mit k=1,2,3. Die Endpunkte sind die Einheitsvektoren in Richtung der neuen x'\-, y'\- bzw. z'\-Achse, und daraus ergeben sich die Gleichungen 2*sin(\a/2)*sin(\f_k)=2*sin(\b_k/2) mit k=1,2,3. Nun kann man ein Gleichungssystem aufstellen und lösen: 2-2a\blue\ =\black\ (a-1)^2+b^2+c^2=4*sin^2(\f_1/2)=2-2*cos(\f_1) \blue\ (das erste Gleichheitszeichen gilt, weil a^2+b^2+c^2=1 ist) =2-+2*sqrt(1-sin^2(\f_1))=2-+2*sqrt(1-sin^2(\b_1/2)/sin^2(\a/2)) =2-+2*sqrt(1-(1-cos(\b_1))/(1-cos(\a)))=2-+2*sqrt((1+cos(\b_1)-cos(\b_2)-cos(\b_3))/(3-cos(\b_1)-cos(\b_2)-cos(\b_3))), daraus folgt a=sqrt((1+cos(\b_1)-cos(\b_2)-cos(\b_3))/(3-cos(\b_1)-cos(\b_2)-cos(\b_3))) und mit derselben Rechnung b=sqrt((1-cos(\b_1)+cos(\b_2)-cos(\b_3))/(3-cos(\b_1)-cos(\b_2)-cos(\b_3))) und c=sqrt((1-cos(\b_1)-cos(\b_2)+cos(\b_3))/(3-cos(\b_1)-cos(\b_2)-cos(\b_3))). Die Richtung der Drehachse (a;b;c) ist also durch den Vektor (+-sqrt(1+cos(\b_1)-cos(\b_2)-cos(\b_3));+-sqrt(1-cos(\b_1)+cos(\b_2)-cos(\b_3));+-sqrt(1-cos(\b_1)-cos(\b_2)+cos(\b_3))) gegeben, und das kann man noch (mit Weglassung eines gemeinsamen Faktors 2 unter der Wurzel) umformen zu (+-sqrt(cos(\b_1)-cos(\a));+-sqrt(cos(\b_2)-cos(\a));+-sqrt(cos(\b_3)-cos(\a))).
Die Formeln, die mit Hilfe der so bestimmten Drehachse und des gefundenen Winkels α die gesuchte Drehmatrix ausdrücken, gebe ich nicht an, weil dies zu recht unübersichtlichen Ausdrücken führt.
Vielleicht überlege ich mir noch eine Vereinfachung dazu, die ich dann mitteilen könnte.
Gruß Buri
|
Profil
Quote
Link |
milch
Aktiv  Dabei seit: 23.02.2009 Mitteilungen: 297
Aus:
 |     Beitrag No.16, eingetragen 2012-08-13 03:16
|
 
danke schonmal, mein erstes Problem ist aber schon die Gleichung: 2*cos(\a)+1=cos(\b_1)+cos(\b_2)+cos(\b_3) sollen die \b_i die gegebenen Winkel zwischen den Achsen der beiden Koordinatenysteme sein? Ich verstehe dann nicht wie du auf diese Formel gekommen bist? Ich vermute du nutzt hier aus, dass die Spur gleich bleibt und das die linke Seite die Spur der gesuchten Drehmatrix ist, ist mir auch klar nur die rechte Seite nicht.
|
Profil
Quote
Link |
Buri
Senior  Dabei seit: 02.08.2003 Mitteilungen: 34700
Aus: Dresden
 |     Beitrag No.17, eingetragen 2012-08-13 06:40
|
2012-08-13 03:16 - milch in Beitrag No. 16 schreibt:
... nur die rechte Seite nicht. Hi milch,
die Elemente der Drehmatrix sind jeweils die Cosinus der Winkel zwischen alten und neuen Achsen. Daher sind cos(β1), cos(β2) und cos(β3) die Diagonalelemente dieser Matrix, und ihre Summe ist die Spur.
Gruß Buri
|
Profil
Quote
Link |
milch
Aktiv  Dabei seit: 23.02.2009 Mitteilungen: 297
Aus:
 |     Beitrag No.18, eingetragen 2012-08-13 17:14
|
Das ist mir nicht klar. Ich beziehe mich auf die Darstellung einer Rotationsmatrix um eine "beliebige" Achse um einen Winkel Alpha.
Zu finden hier: de.wikipedia.org/wiki/Drehmatrix
im Abschnitte Drehmatrizen des Raumes R³ (die 4. Matrix).
Anders gesagt ich kenne keine Drehmatrix die abhängig von den gegebenen Winkeln formuliert ist, damit wäre die Frage ja auch schon beantwortet.
|
Profil
Quote
Link |
Knaaxx
Senior  Dabei seit: 06.05.2006 Mitteilungen: 2544
Aus:
 |     Beitrag No.19, eingetragen 2012-08-13 17:54
|
@Buri
Sehr schöner elementarer Lösungsweg, auf den ich nie gekommen wäre.
@milch
Wenn du eine beliebige Drehmatrix R nimmst und den cos des Winkels zwischen e1 und R*e1 bestimmst, ist es gerade das erste Diagonalelement von R. Für e2 erhälst das 2. und für e3 das 3. Diagonalelement.
|
Profil
Quote
Link |
Buri
Senior  Dabei seit: 02.08.2003 Mitteilungen: 34700
Aus: Dresden
 |     Beitrag No.20, eingetragen 2012-08-13 20:06
|
2012-08-13 17:14 - milch in Beitrag No. 18 schreibt:
Anders gesagt ich kenne keine Drehmatrix die abhängig von den gegebenen Winkeln formuliert ist ... Hi milch,
eben. Die hier gestellte Frage war jedenfalls für mich neu und die Lösung ist nicht bei Wikipedia zu finden.
Ich danke dir für diesen Link.
Denn damit ist dieses Problem
2012-08-12 21:12 - Buri in Beitrag No. 15 schreibt:
Die Formeln ... gebe ich nicht an, weil dies zu recht unübersichtlichen Ausdrücken führt.
Vielleicht überlege ich mir noch eine Vereinfachung dazu, die ich dann mitteilen könnte. erledigt. Es ist nicht so unübersichtlich, wie es aus der Sicht eines Computer-Algebra-Systems aussah, sondern mit der vierten Formel des genannten Abschnitts bei Wikipedia wird das Problem völlig zufriedenstellend gelöst. Die Spur der Matrix ist übrigens tatsächlich 2*cos(α)+1, und so muß es auch sein.
Gruß Buri
|
Profil
Quote
Link |
milch
Aktiv  Dabei seit: 23.02.2009 Mitteilungen: 297
Aus:
 |     Beitrag No.21, eingetragen 2012-08-14 15:22
|
Ahh ok jetzt verstehe ich es, aber bei der nachfolgenden Rechnung verwirrt mich einiges. Es geht direkt um den Anfang:
 
2-2a= (a-1)^2+b^2+c^2=4*sin^2(\f_1/2)=2-2*cos(\f_1) Das erste Gleichheitszeichen ist klar ja, aber das zweite nicht. Davon abgesehen sieht es hier für mich so aus als hättest du die Umformung die hinter dem ersten Gleichheitszeichen steht nur gemacht um den Teil nach dem zweiten Gleichheitszeichen zu erhalten (woraus du dann den Teil hinter dem dritten Gleichheitszeichen formst). Aber: 1. ist mir nicht klar wieso gilt: (a-1)^2+b^2+c^2=4*sin^2(\f_1/2) 2. ist doch von vornherein klar das gilt a=cos(\f_1) damit könnte man sich doch die zwischenschritte sparen, oder übersehe ich hier etwas?
|
Profil
Quote
Link |
Buri
Senior  Dabei seit: 02.08.2003 Mitteilungen: 34700
Aus: Dresden
 |     Beitrag No.22, eingetragen 2012-08-14 23:22
|
2012-08-14 15:22 - milch in Beitrag No. 21 schreibt:
1. ist mir nicht klar wieso gilt:
 
(a-1)^2+b^2+c^2=4*sin^2(\f_1/2)
2. ist doch von vornherein klar das gilt a=cos(φ 1).
damit könnte man sich doch die zwischenschritte sparen ... Hi milch,
1. Das Quadrat des euklidischen Abstandes zwischen den Vektoren (a,b,c) und (1,0,0) lautet eben so, deswegen habe ich das weiter oben ausdrücklich erwähnt.
2. Richtig. Ich habe es ein wenig zu umständlich gemacht, die Gleichung a = cos(φ1) kann aber auch aus der ersten Zeile meiner Umformungen abgelesen werden.
Auch an der Stelle, wo ich die Drehachse (also einen Vektor mit der gleichen Richtung wie (a,b,c)) berechnet habe, kann man einiges abkürzen, indem man darauf verzichtet, für cos(α) etwas einzusetzen, dann bekommt man das direkt heraus. Wegen der größeren Klarheit habe ich aber den ausführlicheren Rechenweg stehengelassen.
Gruß Buri
[ Nachricht wurde editiert von Buri am 14.08.2012 23:25:23 ]
|
Profil
Quote
Link |
milch
Aktiv  Dabei seit: 23.02.2009 Mitteilungen: 297
Aus:
 |     Beitrag No.23, eingetragen 2012-08-15 13:01
|
Alles klar jetzt hab ich es verstanden, danke auch von mir.
|
Profil
Quote
Link |
MuhCow hat die Antworten auf ihre/seine Frage gesehen. Das Thema wurde von einem Senior oder Moderator abgehakt. | |
| [Neues Thema] [Druckversion] |
|