Grids of Orientations edit page

Numerical work on the rotation group needs orientations spread as evenly as possible over it - to integrate an ODF, to sample one, or to search for a best fit. As on the sphere, there is no perfectly even arrangement, and the constructions on offer differ in how close they come.

plottingConvention.default('y↑→x');

% define a crystal symmetry
cs = crystalSymmetry('432')
cs = crystalSymmetry (⊙c→a)
 
  symmetry: 432    
  elements: 24     
  a, b, c : 1, 1, 1

The Equispaced Grid

equispacedSO3Grid covers the fundamental region of the given symmetry with a nearly constant spacing.

ori = equispacedSO3Grid(cs,'resolution',5*degree)
ori = SO3Grid (432 → y↑→x)
  grid: 4923 orientations, resolution: 5°

Just under 5000 orientations at \(5^\circ\) for cubic symmetry. Seen in axis angle space they fill the fundamental region evenly.

plot(ori,'axisAngle')
plot 2000 random orientations out of 4923 given orientations

Checking for Equidistribution

Even spacing is easier to claim than to achieve, and the honest test is to treat the grid as a data set: an ODF built from it should be the uniform one, and the pole figures of a uniform ODF are flat at 1.

odf = unimodalODF(ori)

plotPDF(odf,Miller({1,0,0},{1,1,0},{1,1,1},cs))
mtexColorbar
odf = SO3FunRBF (432 → y↑→x)
 
  multimodal components
  kernel: de la Vallee Poussin, halfwidth 10°
  center: 4923 orientations, resolution: 5°
  weight: 1

Between 0.93 and 1.02 - flat to within a few percent, which is what a usable grid looks like.

The Regular Grid

regularSO3Grid instead steps through the three Euler angles regularly.

ori = regularSO3Grid(cs,'resolution',5*degree)
ori = orientation (432 → y↑→x)
  size: 72 × 19 × 18

Five times as many orientations for the same nominal resolution, 24624 against 4923.

plot(ori,'axisAngle')
plot 2000 random orientations out of 24624 given orientations

And the extra points do not buy uniformity. The same test now runs from 0.79 to 2.62 - the grid piles up wherever Euler angle space is compressed, exactly as the regular grid on the sphere piles up at the poles, see Spherical Grids.

odf = unimodalODF(ori)

plotPDF(odf,Miller({1,0,0},{1,1,0},{1,1,1},cs))
mtexColorbar
odf = SO3FunRBF (432 → y↑→x)
 
  multimodal components
  kernel: de la Vallee Poussin, halfwidth 10°
  center: 24624 orientations

Use the regular grid when the Euler angle raster itself is wanted, for instance to write an ODF to a file that expects one, and the equispaced grid for everything else.

Grids Around a Given Orientation

localOrientationGrid covers a ball around one orientation rather than the whole region, which is what a local search or a perturbation study needs.

center = orientation.byEuler(10*degree,20*degree,30*degree,cs);

ori = localOrientationGrid(center,10*degree,'resolution',2.5*degree)
ori = orientation (432 → y↑→x)
  size: 265 × 1

265 orientations arranged in shells about the centre. The outermost shell sits at 8.75 degree, half a resolution step inside the radius that was asked for.

max(angle(ori,center)) ./ degree
ans =
    8.7500

Next

Sampling an ODF at random rather than on a grid is Random Sampling. Curves through orientation space, along which many real textures lie, are Fibres of Orientations.

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/OrientationGrid.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.