12.28. Convert Orientation Representation
Group (Subgroup)
Processing (Conversion)
Description
This Filter generates a new orientation representation (see Data Layout Table below) for each Element, given the Input Orientation Representation for the Element. The following table lists the various orientation representations that are supported. DREAM3D is capable of converting between any representation with some caveats. The Input and Output Orientation Type are represented as a zero based index into the combo box widget.

Input Orientation Type
The Input Orientation Type parameter provides the following choices:
Euler Angles [0]: Three-component Euler angle representation (phi1, Phi, phi2).
Orientation Matrix [1]: Nine-component 3x3 orientation matrix in row major format.
Quaternion [2]: Four-component quaternion representation ([x, y, z], w).
Axis Angle [3]: Four-component axis-angle representation ([x, y, z], Angle in degrees).
Rodrigues Vector [4]: Four-component Rodrigues vector ([x, y, z], w).
Homochoric [5]: Three-component homochoric vector ([x, y, z]).
Cubochoric [6]: Three-component cubochoric vector ([x, y, z]).
Stereographic Projection [7]: Three-component stereographic projection vector ([x, y, z]).
Output Orientation Type
The Output Orientation Type parameter provides the following choices:
Euler Angles [0]: Three-component Euler angle representation (phi1, Phi, phi2).
Orientation Matrix [1]: Nine-component 3x3 orientation matrix in row major format.
Quaternion [2]: Four-component quaternion representation ([x, y, z], w).
Axis Angle [3]: Four-component axis-angle representation ([x, y, z], Angle in degrees).
Rodrigues Vector [4]: Four-component Rodrigues vector ([x, y, z], w).
Homochoric [5]: Three-component homochoric vector ([x, y, z]).
Cubochoric [6]: Three-component cubochoric vector ([x, y, z]).
Stereographic Projection [7]: Three-component stereographic projection vector ([x, y, z]).
Orientation Representation Enumeration Index
Enumeration Index |
Orientation Representation |
|---|---|
0 |
EulerAngles |
1 |
Orientation Matrix |
2 |
Quaternions |
3 |
Axis Angle |
4 |
Rodrigues Vectors |
5 |
Homochoric |
6 |
Cubochoric |
7 |
StereoGraphic |
Data Layout
Orientation Representation |
No. of Components |
Data Layout |
|---|---|---|
EulerAngles |
3 |
phi1, Phi, phi2 |
Orientation Matrix |
9 |
Row Major Format |
Quaternions |
4 |
( [x, y, z], w ) |
Axis Angle |
4 |
( [x, y, z], Angle) |
Rodrigues Vectors |
4 |
( [x, y, z], w )* |
Homochoric |
3 |
[x, y, z] |
Cubochoric |
3 |
[x, y, z] |
StereoGraphic |
3 |
[x, y, z] |
Rodrigues Vector: DREAM3D stores the Rodrigues vector as a normalized vector with the lenth as the last component. In order to convert from the 4 component to the typical 3 component Rodrigues Vector the user can multiply each vector part by the scalar part.
Data Range
The valid range for Euler angles is (Degrees):
+ phi-1: 0 to 360
+ Phi : 0 to 180
+ phi-2: 0 to 360
Rodrigues Vector: Length must be positive and the vector must be normalized.
Homochoric Vector: Sum of Squares must = 1.0
Quaternion: Scalar part must be positive and have unit norm
Axis Angle: Angle must be in the range of 0-Pi.
Stereographic Vector: Must be unit norm
Orientation Matrix: Determinant must be +1.0
Data Conversion Notes
This Filter does not modify the input array; it creates a new output array holding the converted representation. The input orientation values are used as supplied. (DREAM3D 6.5.171 performed an in-place Euler range-normalization step that both mutated the input array and — because it applied fmod(Phi, pi) and sign flips that are not rotation-preserving — could change the converted orientation for Euler input outside the standard Bunge ranges. That step is deliberately not performed here; see deviation D5.)
Algorithm Reference
The transformation equations between all representations follow:
D. Rowenhorst, A. D. Rollett, G. S. Rohrer, M. Groeber, M. Jackson, P. J. Konijnenberg, and M. De Graef, “Consistent representations of and conversions between 3D rotations,” Modelling and Simulation in Materials Science and Engineering 23(8), 083501 (2015). DOI: 10.1088/0965-0393/23/8/083501
The conversions themselves are implemented in EbsdLib and are verified against this reference by EbsdLib’s own test suite.
Precision Notes
While every effort has been made to ensure the correctness of each transformation algorithm, certain situations may arise where the initial precision of the input data is not large enough for the algorithm to calculate an answer that is intuitive. The user should be acutely aware of their input data and if their data may cause these situations to occur. Combinations of Euler angles close to 0, 180 and 360 can cause these issues to be hit. For instance an Euler angle of [180, 56, 360] is symmetrically the same as [180, 56, 0] and due to calculation errors and round off errors converting that Euler angle between representations may not give the numerical answer the user was anticipating but will give a symmetrically equivalent angle.
The input array must be of type float32. Conversions are performed in float32 precision. (DREAM3D 6.5.171 additionally accepted float64 input arrays; see the V&V deviations for this filter.)
Input Parameter(s)
Parameter Name |
Parameter Type |
Parameter Notes |
Description |
|---|---|---|---|
Input Orientation Type |
Choices |
Specifies the incoming orientation representation enumeration index |
|
Output Orientation Type |
Choices |
Specifies to which orientation representation to convert the incoming data. Specified as an enumeration index |
|
Input Orientations |
Array Selection |
Allowed Types: float32 |
The complete path to the incoming orientation representation data array |
Output Orientations |
DataObjectName |
The name of the data array with the converted orientation representation |
Example Pipelines
02_Adaptive Alignment - Misorientation - Zero Shifts
(02) Small IN100 Full Reconstruction
INL Export
03_Adaptive Alignment - Mutual Information - SEM Images
MassifPipeline
InsertTransformationPhase
04_Steiner Compact
License & Copyright
Please see the description file distributed with this Plugin
DREAM3D-NX Help
If you need help, need to file a bug report or want to request a new feature, please head over to the DREAM3DNX-Issues GitHub site where the community of DREAM3D-NX users can help answer your questions.