Crystal Orientations & IPF
Orientation representation
A crystal orientation describes how the crystal lattice frame is rotated relative to the sample (laboratory) frame. The package follows the convention used by LabDCT / GrainMapper3D:
- Bunge Euler angles \((\varphi_1,\, \Phi,\, \varphi_2)\) — three successive rotations about the ZXZ axes of the sample frame.
- Stored in
dct.EulerAnglewith shape \((N_\text{grains}, 3)\) in degrees. - Grain
gid(1-based, MATLAB convention) maps to rowgid − 1.
From Euler angles to rotation matrix
The Bunge rotation matrix \(\mathbf{g}\) is the composition:
It maps a direction \(\mathbf{d}\) expressed in the crystal frame to the corresponding direction in the sample frame:
The inverse (transposed, since \(\mathbf{g} \in \mathrm{SO}(3)\)) gives the crystal direction that corresponds to a given sample direction:
Inverse Pole Figure (IPF)
An Inverse Pole Figure maps a chosen sample reference direction (e.g. the loading axis \([001]\)) into the crystal frame and assigns an RGB colour to the result.
Step 1 — project into crystal frame
For the \([001]\) IPF:
Step 2 — apply crystal symmetry
Under cubic (m-3m) symmetry there are 48 equivalent directions. The representative in the standard triangle (fundamental zone) is obtained by:
- Taking absolute values: \(\mathbf{d} \leftarrow |\mathbf{d}|\).
- Sorting the components in descending order: \(d_0 \geq d_1 \geq d_2 \geq 0\).
The three corners of the standard triangle and their conventional colours are:
| Direction | Indices | Colour |
|---|---|---|
| \([001]\) | \((1,0,0)\) after reduction | Blue |
| \([101]\) | \((1,1,0)/\sqrt{2}\) | Green |
| \([111]\) | \((1,1,1)/\sqrt{3}\) | Red |
Colour convention
The exact colour mapping depends on the reconstruction software.
The pre-computed IPF001 stored in the DCT HDF5 reflects the convention
of the MATLAB reconstruction code. After a DVC rotation update the
colours are recomputed by orix, which follows the MTEX convention.
Verify visually that the two conventions match before comparing maps.
Step 3 — colour assignment
orix computes IPF colours using a stereographic projection of the fundamental triangle, normalising so that each corner maps to pure red, green, or blue and all intermediate orientations are interpolated linearly in the triangle.
Updating orientations after DVC
When a DVC rotation \(\mathbf{R}\) is applied to a grain with orientation \(\mathbf{g}\), the new orientation is:
The crystal direction now aligned with the sample \([001]\) axis becomes:
Physically this means: the lattice rotation \(\mathbf{R}\) tilts the crystal axes, so the sample \([001]\) direction now points along a different crystal direction — the IPF colour changes accordingly.
Because \(\mathbf{R}\) varies spatially within the DVC field, different regions of the same grain can show slightly different colours in the updated IPF map, reflecting sub-grain orientation gradients introduced by the deformation.
Rodrigues vectors
Some DCT codes also store orientations as Rodrigues–Frank vectors
(dct.RodVec), related to the rotation axis \(\hat{\mathbf{n}}\) and angle
\(\omega\) by:
orix can convert these directly via Rotation.from_axes_angles after
normalising, or via Rotation.from_rodrigues in older versions.
References
- Bunge H J (1982). Texture Analysis in Materials Science. Butterworth.
- Nolze G, Hielscher R (2016). Orientations — perfectly colored. Journal of Applied Crystallography 49, 1786–1802.
- Bachmann F, Hielscher R, Schaeben H (2010). Texture analysis with MTEX. Solid State Phenomena 160, 63–68.
- orix documentation: orix.readthedocs.io