Konventionen für Eulersche Winkel.
- microelly2
- Veteran
- Posts: 4688
- Joined: Tue Nov 12, 2013 4:06 pm
- Contact:
Re: Konventionen für Eulersche Winkel.
In Blender gibt es die volle Liste und manchmal braucht man auch den einen oder andren exoten.
- Attachments
-
- t.png (14.05 KiB) Viewed 1973 times
Re: Konventionen für Eulersche Winkel.
Sorry, Thomas, aber die Liste ist nicht voll(ständig). Das sind nur die 6 Tait–Bryan Fälle (jede Achse kommt einmal vor). Die 6 "reinen" Euler Fälle (die letzte Achse ist eine gedrehte Version der ersten Achse) fehlenmicroelly2 wrote:In Blender gibt es die volle Liste
http://en.wikipedia.org/wiki/Euler_angl ... ler_angles
Re: Konventionen für Eulersche Winkel.
Wenn ich den Text richtig verstehe gibt es noch, "intrinsic" und "extrinsic", so dass wir dann letztendlich bei 24 Fällen liegen?Wiki wrote: Any orientation can be achieved by composing three elemental rotations. The elemental rotations can either occur about the axes of the fixed coordinate system (extrinsic rotations) or about the axes of a rotating coordinate system, which is initially aligned with the fixed one, and modifies its orientation after each elemental rotation (intrinsic rotations). The rotating coordinate system may be imagined to be rigidly attached to a rigid body. In this case, it is sometimes called a local coordinate system. Without considering the possibility of using two different conventions for the definition of the rotation axes (intrinsic or extrinsic), there exist twelve possible sequences of rotation axes, divided in two groups:
Im Wiki-Artikel Conversion between quaternions and Euler angles findet man unter Referenzen ein Paper von der NASA, das die "zwölf" Fälle behandelt. Daraus wollte ich die Quaternion aus den drei Winkeln berechnen und die Formeln haben kein bisschen gepasst. Ich habe mir diese dann selbst "hergelitten", was letzten Endes erstaunlich einfach war.
Re: Konventionen für Eulersche Winkel.
Kombinatorisch gesehen, natürlich. In der Implementierung von OCCT werden im Fall "extrinsic" die beiden Werte für den ersten und letzten Winkel vertauscht. http://git.dev.opencascade.org/gitweb/? ... 1ba3f#l280wmayer wrote:Wenn ich den Text richtig verstehe gibt es noch, "intrinsic" und "extrinsic", so dass wir dann letztendlich bei 24 Fällen liegen?
EDIT: Die Implementierung von OCCT scheint der englischen Wikipedia zu widersprechen. Ich glaube wir brauchen mal zitierfähige Literatur
EDIT2: Also die Winkel zu vertauschen, wie OCCT das macht, ergibt (für sich) überhaupt keinen Sinn. Die Reihenfolge der Operationen zu tauschen macht schon mehr Sinn. Aber OCCT hätte wohl beides tun müssen, übergeht aber das letztere.
EDIT3: http://tracker.dev.opencascade.org/view.php?id=25946
EDIT4: Das gilt natürlich nur für die Tait–Bryan Fälle. Ansonsten sind die beteiligten Achsen ja die selben.
Ich hab da so eine Idee: (x y z w) (OSG,OCCT,FreeCAD) vs. (w x y z) (Blender, wikipedia link) ??? In den Formeln für Quaternionen q0 bis q3 zu benutzen halte ich ja für gefährlich.wmayer wrote:Daraus [Nasa Paper] wollte ich die Quaternion aus den drei Winkeln berechnen und die Formeln haben kein bisschen gepasst.
Re: Konventionen für Eulersche Winkel.
Das war nicht das Problem. Wenn man sich die Definition der Quaternion-Multiplikation genau ansieht, sieht man schnell, dass der Realanteil (berechnet aus Euler- oder Tait-Bryan-Winkel) immer dieser Form folgt: c1*c2*c3 +- s1*s2*s3. Das heißt, im NASA-Paper ist q1 der Realanteil w. Ich denke, der Grund, warum das nicht passt, ist das "intrinsic" vs. "extrinsic".Ich hab da so eine Idee: (x y z w) (OSG,OCCT,FreeCAD) vs. (w x y z) (Blender, wikipedia link) ??? In den Formeln für Quaternionen q0 bis q3 zu benutzen halte ich ja für gefährlich.
EDIT: Für eine der Formeln bin ich mal auf ein Ergebnis gestoßen, wo erster und dritter Winkel vertauscht waren.
Re: Konventionen für Eulersche Winkel.
… habe versucht meine "Hausaufgaben zu machen" und gesucht.
Am ehesten und informativsten trifft wohl dieser Post zu - Staub weg!
Ich möchte an die Eulerwinkel im Placement-Dialog mittels Spreadsheet (z.B.) rankommen,
ohne dauernd innerhalb meines Modells mehrere gleiche Maßgruppen zu ändern.
Leider besitzen die Eulerwinkel keine Formeleingangsoption.
Aber genau die Eulerwinkel sind die plausibelste Wahl (z.B. für ein CNC-Prog).
Gibt es da eine Lösung ohne gleich Py-programmieren zu müssen?
Nochmal zur Anschaulichkeit:
Am ehesten und informativsten trifft wohl dieser Post zu - Staub weg!
Ich möchte an die Eulerwinkel im Placement-Dialog mittels Spreadsheet (z.B.) rankommen,
ohne dauernd innerhalb meines Modells mehrere gleiche Maßgruppen zu ändern.
Leider besitzen die Eulerwinkel keine Formeleingangsoption.
Aber genau die Eulerwinkel sind die plausibelste Wahl (z.B. für ein CNC-Prog).
Gibt es da eine Lösung ohne gleich Py-programmieren zu müssen?
Nochmal zur Anschaulichkeit:
- Attachments
-
- Roll_Pitch_Yaw.FCStd
- FC.18.14210
- (105.6 KiB) Downloaded 29 times
- microelly2
- Veteran
- Posts: 4688
- Joined: Tue Nov 12, 2013 4:06 pm
- Contact:
Re: Konventionen für Eulersche Winkel.
Es gibt einen einfachen Aufruf in Python, um eine Rotation zu erzeugen
rotation=FreeCAD.Rotation(10,20,30)
dabei ist 10 die Richtung/yaw gier
20 die Steigung nick/pitch
und 30 die Seitenlage roll
das ist programmtechnisch nur eine zeile,
aber wie man das ohne diese Funktionsaufruf aus dem Spreadsheet in das Placement bekommt weiß ich nicht.
rotation=FreeCAD.Rotation(10,20,30)
dabei ist 10 die Richtung/yaw gier
20 die Steigung nick/pitch
und 30 die Seitenlage roll
das ist programmtechnisch nur eine zeile,
aber wie man das ohne diese Funktionsaufruf aus dem Spreadsheet in das Placement bekommt weiß ich nicht.
-
- Posts: 436
- Joined: Wed Sep 15, 2010 9:38 am
Re: Konventionen für Eulersche Winkel.
In meiner Version von FreeCAD gibt es einen Widerspruch in der Hilfe für die Pythonsche toEuler Funktion:
Es scheint, dass der Ausgang von toEuler entspricht tatsächlich yaw-pitch-roll aber es entspräche die ZY'X'' Konvention.
Danke,
Gaël
OS: Ubuntu 16.04.5 LTS
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.18.14727 (Git)
Build type: Release
Branch: master
Hash: c6df59969bfb3ae2027e2b47ddd559852f6e9a4e
Python version: 2.7.12
Qt version: 4.8.7
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: English/UnitedStates (en_US)
Code: Select all
>>> help(App.Rotation.toEuler)
Help on method_descriptor:
toEuler(...)
toEuler(Vector) -> list
Get the Euler angles of this rotation
as yaw-pitch-roll in XY'Z'' convention
Danke,
Gaël
OS: Ubuntu 16.04.5 LTS
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.18.14727 (Git)
Build type: Release
Branch: master
Hash: c6df59969bfb3ae2027e2b47ddd559852f6e9a4e
Python version: 2.7.12
Qt version: 4.8.7
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: English/UnitedStates (en_US)