Open Matlab File in the Editor MTEX

Crystal Orientations (The Class orientation)

This sections describes the class orientation and gives an overview how to work with crystal orientation in MTEX.

Class Description

In texture analysis crystal orientations are used to describe the alignment of the crystals within the specimen. A crystal orientation is defined as the rotation that maps the specimen coordinate system onto the crystal coordinate system. Since, the crystal coordinate system and the specimen coordinate system are well defined only up to crystal symmetry and specimen symmetry, a orientation is in general represented by a class of crystallographically equivalent rotations. In MTEX the class orientation is an inheritant of the class rotation. In particular, every function that is defined for a rotation is also available for a orientation.

Defining a Crystal Orientation

In order to define a crystal orientation one has to define crystal and specimen symmetry first.

cs = crystalSymmetry('cubic');
ss = specimenSymmetry('orthorhombic');

Now a crystal orientation to a certain rotation

rot = rotation('Euler',30*degree,50*degree,10*degree);

is defined by

o = orientation(rot,cs,ss)
 
o = orientation  
  size: 1 x 1
  crystal symmetry : m-3m
  specimen symmetry: mmm
 
  Bunge Euler angles in degree
  phi1  Phi phi2 Inv.
    30   50   10    0
 
 

In order to streamline the definition the arguments to define the rotation can be directly pass to define a orientation:

o = orientation('Euler',30*degree,50*degree,10*degree,cs,ss)
 
o = orientation  
  size: 1 x 1
  crystal symmetry : m-3m
  specimen symmetry: mmm
 
  Bunge Euler angles in degree
  phi1  Phi phi2 Inv.
    30   50   10    0
 
 

Accordingly parameterisations of rotations are also available for orientations

Have a look at rotation help page for more details. Beside these parameterisations for rotations there are also some parameterisations which are unique for orientations

Miller indice

There is also a Miller indice convention for defining crystal orientations.

o = orientation('Miller',[1 0 0],[0 1 1],cs,ss)
 
o = orientation  
  size: 1 x 1
  crystal symmetry : m-3m
  specimen symmetry: mmm
 
  Bunge Euler angles in degree
  phi1  Phi phi2 Inv.
   135   90   90    0
 
 

Predifined Orientations

In the MTEX there is a list of predefined orientations:

o = orientation('goss',cs,ss)
 
o = orientation  
  size: 1 x 1
  crystal symmetry : m-3m
  specimen symmetry: mmm
 
  Bunge Euler angles in degree
  phi1  Phi phi2 Inv.
     0   45    0    0
 
 

Rotating Crystal Directions onto Specimen Directions

Let

h = Miller(1,0,0,cs)
 
h = Miller  
 size: 1 x 1
 symmetry: m-3m
  h 1
  k 0
  l 0

be a certain crystal direction and

o = orientation('Euler',90*degree,90*degree,0*degree,cs,ss)
 
o = orientation  
  size: 1 x 1
  crystal symmetry : m-3m
  specimen symmetry: mmm
 
  Bunge Euler angles in degree
  phi1  Phi phi2 Inv.
    90   90    0    0
 
 

a crystal orientation. Then the alignment of this crystal direction with respect to the specimen coordinate system can be computed via

r = o * h
 
r = vector3d  
 size: 1 x 1
  x y z
  0 1 0

Conversely the crystal direction that is mapped onto a certain specimen direction can be computed via the backslash operator

o \ r
 
ans = Miller  
 size: 1 x 1
 symmetry: m-3m
  h 1
  k 0
  l 0

Concatenating Rotations

Let

o = orientation('Euler',90*degree,0,0,cs,ss);
rot = rotation('Euler',0,60*degree,0);

be a crystal orientation and a rotation of the specimen coordinate system. Then the orientation of the crystal with respect to the rotated specimen coordinate system calculates by

o1 = rot * o
 
o1 = orientation  
  size: 1 x 1
  crystal symmetry : m-3m
  specimen symmetry: 1
 
  Bunge Euler angles in degree
  phi1  Phi phi2 Inv.
     0   60   90    0
 
 

Then the class of rotations crystallographically equivalent to o can be computed in two way. Either by using the command symmetrise

symmetrise(o)
 
ans = orientation  
  size: 48 x 1
  crystal symmetry : m-3m
  specimen symmetry: mmm
 

or by using multiplication

ss * o * cs
 
ans = rotation  
  size: 8 x 48
 

Caclulating Missorientations

Let cs and ss be crystal and specimen symmetry and o1 and o2 two crystal orientations. Then one can ask for the missorientation between both orientations. This missorientation can be calculated by the function angle.

angle(o,o1) / degree
ans =
   30.0000

This missorientation angle is in general smaller then the missorientation without crystal symmetry which can be computed via

angle(rotation(o),rotation(o1)) /degree
ans =
   60.0000

Calculating with Orientations and Rotations

Beside the standard linear algebra operations there are also the following functions available in MTEX. Then rotational angle and the axis of rotation can be computed via then commands angle(o) and axis(o)

angle(o1)/degree

axis(o1)
ans =
   30.0000
 
ans = Miller  
 size: 1 x 1
 symmetry: m-3m
  h -1
  k  0
  l  0

The inverse orientation to o you get from the command inv(q)

inv(o1)
 
ans = inverse orientation  
  size: 1 x 1
  specimen symmetry: 1
  crystal symmetry : m-3m
 
  Bunge Euler angles in degree
  phi1  Phi phi2 Inv.
    90   60  180    0
 
 

Conversion into Euler Angles and Rodrigues Parametrisation

There are methods to transform quaternion in almost any other parameterization of rotations as they are:

[phi1,Phi,phi2] = Euler(o)
phi1 =
    1.5708
Phi =
     0
phi2 =
     0

Plotting Orientations

The plot function allows you to visualize an quaternion by plotting how the standard basis x,y,z transforms under the rotation.

plot(o1)
Do something fancy here.

Complete Function list

BCVbiased cross validation
KLCVKullback Leibler cross validation for optimal kernel estimation
LSCVleast squares cross valiadation
anglecalculates rotational angle between orientations
axisrotational axis of the orientation or misorientation
bingham_testbingham test for spherical/prolat/oblat case
calcAngleDistributioncalculate angle distribution
calcBinghamODFcalculate ODF from individuel orientations via kernel density estimation
calcFourierODFcalculate ODF from individuel orientations via kernel density estimation
calcKernelcompute an optimal kernel function for ODF estimation
calcKernelODFcalculate ODF from individuel orientations via kernel density estimation
calcODFcomputes an ODF from individuel orientations
calcTensorcompute the average tensor for a vector of orientations
checkFundamentalRegionchecks whether a orientation sits within the fundamental region
crossCorrelationcomputes the cross correlation for the kernel density estimator
displaystandart output
dotcompute minimum dot(o1,o2) modulo symmetry
dot_outer
fibreVolumeratio of orientations close to a certain fibre
getFundamentalRegionprojects orientations to a fundamental region
inverse of an orientation
isMisorientationcheck whether o is a misorientation
ldivideo .\ v
meanof a list of orientations, principle axes and moments of inertia
mldivideo \ v
mtimesorientation times Miller and orientation times orientation
niceEulerorientation to euler angle
orientationclass representing orientations
plotannotate a orientation to an existing plot
plotAngleDistributionplot the angle distribution
plotAxisDistributionplot uncorrelated axis distribution
plotIPDFplot orientations into inverse pole figures
plotODFPlot EBSD data at ODF sections
plotPDFplot orientations into pole figures
project2EulerFRprojects orientation to a fundamental region
project2FundamentalRegionprojects orientation to a fundamental region
project2ODFsectionproject orientation to ODF sections used by plotODF
qqplotquantilequantile of misorientation angle against random angular
scatterplots ebsd data as scatter plot
sphereVolumeratio of orientations with a certain orientation
symmetriseall crystallographically equivalent orientations
timesvec = ori .* Miller
transformReferenceFrameonly applicable for crystal symmetry
uniquedisjoint list of quaternions
volumeratio of orientations with a certain orientation