An orientation answers one question: how is this crystal placed in this specimen? In MTEX it is a rotation that maps coordinates from the crystal reference frame into the specimen reference frame. It also carries the symmetry attached to each frame.
This page assumes the three-dimensional directions introduced in Defining Three-Dimensional Vectors, the plane and direction notation from Miller Indices, and basic matrix algebra. The constructors are the same as on Defining Rotations, with a crystalSymmetry supplied as an extra argument.
What this mapping means is developed in Theory and compared with other conventions in MTEX vs. Bunge Convention. This page concentrates on building orientations.
plottingConvention.default('y↑→x');
% load the crystal symmetry and reference frame from a CIF file
cs = crystalSymmetry.load('Cu-Copper.cif');Euler Angles
Euler angles are the most common input and the one most easily misinterpreted. Their axes, order, and mapping direction belong to the convention. Equal angle triplets in different conventions need not describe the same orientation.
MTEX uses the Bunge convention by default. Naming it explicitly keeps a reusable script independent of the current session preference. Angles are in radians, so values stated in degrees are multiplied by degree.
ori = orientation.byEuler(30*degree,50*degree,10*degree,'Bunge',cs)ori = orientation (Copper → y↑→x)
Bunge Euler angles in degree
phi1 Phi phi2
30 50 10The display gives the three Bunge angles and names the copper crystal symmetry alongside them. This attached crystal frame and symmetry are what distinguish an orientation from a bare rotation.
Rotation Matrix
A \(3 \times 3\) matrix can define the same mapping. Its convention must be checked when it comes from another program: this matrix maps crystal-frame coordinates into specimen-frame coordinates.
M = eye(3);ori = orientation.byMatrix(M,cs)ori = orientation (Copper → y↑→x)
Bunge Euler angles in degree
phi1 Phi phi2
0 0 0The identity matrix gives the orientation in which the Cartesian crystal frame is aligned with the specimen frame. It is the reference setting from which the Euler angles of every other orientation are counted.
The point group does not by itself determine how the Cartesian crystal frame is inscribed into the lattice axes. A statement such as X || a*, Z || c belongs to the crystal reference frame, not to the symmetry. Changing that alignment changes the coordinate description without moving the crystal; see The Crystal Reference System.
Miller Indices
Metallurgy often names an orientation by two crystal quantities: the lattice plane facing the specimen Z axis and the lattice direction pointing along specimen X. The inputs must describe an orthogonal plane normal and direction. That is what orientation.byMiller takes, here for the Goss orientation \((011)[100]\).
ori = orientation.byMiller([0 1 1],[1 0 0],cs)ori = orientation (Copper → y↑→x)
Bunge Euler angles in degree
phi1 Phi phi2
0 45 0Apply the orientation to the plane normal and the lattice direction to check where they point in the specimen frame.
rPlane = ori * Miller(0,1,1,cs,'hkl');
rDirection = ori * Miller(1,0,0,cs,'uvw');
plot([rPlane,rDirection],'upper','grid','MarkerSize',10,...
'label',{'(011)','[100]'},'backgroundColor','w','nolabel')
Notice that the \((011)\) pole is at the centre, the specimen Z direction, while \([100]\) is on the specimen X axis at the rim.
Goss and the other named texture components are predefined. The zero angular difference confirms that this result is also orientation.goss(cs); see Standard Orientations.
angle(ori,orientation.goss(cs)) ./ degreeans =
0Random Orientations
As for rotations, rand generates uniformly distributed orientations and needs the crystal symmetry as well. MTEX stores the 100 results in one vectorized orientation array.
ori = orientation.rand(100,cs);
length(ori)ans =
100Symmetrically Equivalent Orientations
A crystal cannot distinguish its symmetrically equivalent settings, so an orientation represents a whole class of rotations. symmetrise lists that class.
ori = orientation.byEuler(30*degree,50*degree,10*degree,'Bunge',cs);
length(ori.symmetrise)ans =
48Copper has point group m-3m with 48 elements. Only the 24 proper elements describe settings into which the crystal can be physically turned.
length(ori.symmetrise('proper'))ans =
24The other 24 are improper lattice symmetries. They still matter when a calculation treats opposite plane normals as equivalent, as conventional diffraction does under Friedel's law.
This equivalence is why the angle between two orientations is the smallest angle over all equivalent pairs. The dedicated Symmetry page develops this rule and explains when to use the 'noSymmetry' option.
Specimen Symmetry
A specimen may have symmetry of its own. A rolled sheet, for example, is commonly modelled with orthorhombic symmetry: three mutually perpendicular twofold axes, or equivalently three mirror planes in the full point group. It is represented by a specimenSymmetry and passed alongside the crystal symmetry.
ss = specimenSymmetry('orthorhombic');ori = orientation.byEuler(30*degree,50*degree,10*degree,'Bunge',cs,ss)ori = orientation (Copper → y↑→x (mmm))
Bunge Euler angles in degree
phi1 Phi phi2
30 50 10Crystal symmetry acts in the crystal frame and specimen symmetry in the specimen frame. With the full point groups, the class contains the 48 copper elements times the 8 orthorhombic elements.
length(ori.symmetrise)ans =
384Restricting both groups to proper operations leaves the 24 crystal rotations times the 4 specimen rotations.
length(ori.symmetrise('proper'))ans =
96Specimen symmetry is a statement about the sample, not about the measurement. Its axes must match the physical specimen frame, and imposing a symmetry that is not present hides real texture components. Specimen Symmetry explains when to use it.
References
- H.-J. Bunge, Texture Analysis in Materials Science: Mathematical Methods, Butterworths, English ed., 1982, establishes the Euler-angle convention used in texture analysis.
- A. Morawiec, Orientations and Rotations: Computations in Crystallographic Textures, Springer, 2004, develops orientations as rotations modulo crystallographic symmetry.
- D. Rowenhorst et al., Consistent representations of and conversions between 3D rotations, Modelling and Simulation in Materials Science and Engineering 23 (2015) 083501, compares conventions and conversion formulas.
- The International Union of Crystallography, Friedel's law, states the diffraction equivalence and its exception for resonant scattering.
Next
Theory explains how an orientation maps coordinates, which is the definition the rest of MTEX rests on. Pole Figures and Inverse Pole Figures are the two ways of looking at one. Existing orientation files are handled by Import.
Citing this page.
This page is part of the documentation of
MTEX, a free and open
source MATLAB toolbox for analyzing and modeling crystallographic textures.
It was written by The MTEX Developers and is published at
https://mtex-toolbox.github.io/OrientationDefinition.html.
If you use MTEX, or reuse text or figures from this page, in your research,
please cite
F. Bachmann, R. Hielscher, H. Schaeben: Texture Analysis with MTEX - Free and Open Source Software Toolbox, Solid State Phenomena 160 (2010), 63-68. 10.4028/www.scientific.net/SSP.160.63
BibTeX
@article{bachmann2010mtex,
author = {F. Bachmann and R. Hielscher and H. Schaeben},
title = {Texture Analysis with MTEX - Free and Open Source Software Toolbox},
journal = {Solid State Phenomena},
volume = {160},
pages = {63-68},
year = {2010},
doi = {10.4028/www.scientific.net/SSP.160.63},
url = {https://doi.org/10.4028/www.scientific.net/SSP.160.63}
}
Other papers describing specific MTEX methods are listed under Publications — please cite the one that best fits your application. The MTEX source code is licensed under the GNU General Public License v2.0; the text and figures of this documentation are licensed under CC BY 4.0, which permits reuse — including by automated systems — provided The MTEX Developers and this page are credited.