WOLFRAM SYSTEM MODELER
axesRotationsAnglesReturn the 3 angles to rotate in sequence around 3 axes to construct the given orientation object |
SystemModel["Modelica.Mechanics.MultiBody.Frames.axesRotationsAngles"]
This information is part of the Modelica Standard Library maintained by the Modelica Association.
angles = Frames.axesRotationsAngles(R, sequence, guessAngle1);
A call to this function of the form
Frames.Orientation R; parameter Integer sequence[3] = {1,2,3}; SI.Angle angles[3]; equation angle = axesRotationAngles(R, sequence);
computes the rotation angles "angles[1:3]" to rotate frame 1 into frame 2 along axes sequence[1:3], given the orientation object R from frame 1 to frame 2. Therefore, the result of this function fulfills the following equation:
R = axesRotation(sequence, angles)
The rotation angles are returned in the range
-π <= angles[i] <= π
There are two solutions for "angles[1]" in this range. Via the third argument guessAngle1 (default = 0) the returned solution is selected such that |angles[1] - guessAngle1| is minimal. The orientation object R may be in a singular configuration, i.e., there is an infinite number of angle values leading to the same R. The returned solution is selected by setting angles[1] = guessAngle1. Then angles[2] and angles[3] can be uniquely determined in the above range.
Note, that input argument sequence has the restriction that only values 1,2,3 can be used and that sequence[1] ≠ sequence[2] and sequence[2] ≠ sequence[3]. Often used values are:
sequence = {1,2,3} // Cardan angle sequence = {3,1,3} // Euler angle sequence = {3,2,1} // Tait-Bryan angle sequence
R |
Type: Orientation Description: Orientation object to rotate frame 1 into frame 2 |
---|---|
sequence |
Default Value: {1, 2, 3} Type: Integer[3] Description: Sequence of rotations from frame 1 to frame 2 along axis sequence[i] |
guessAngle1 |
Default Value: 0 Type: Angle (rad) Description: Select angles[1] such that |angles[1] - guessAngle1| is a minimum |
angles |
Type: Angle[3] (rad) Description: Rotation angles around the axes defined in 'sequence' such that R=Frames.axesRotation(sequence,angles); -pi < angles[i] <= pi |
---|