Orientation-Dependent Functions introduced the SO3Fun interface and the representations that implement it. This page shows how to construct the representation that matches the information you already have.
Choose a Representation
All SO3Fun representations support nearly the same operations. Different representations can also be combined in one expression. Choose one by the form of the available data rather than by the operation you plan next.
|
starting point |
representation |
constructor or guide |
|
an explicit formula or algorithm |
formula evaluated on demand |
|
|
a general function or harmonic coefficients |
harmonic series |
|
|
centres with radial peaks |
radial basis functions |
|
|
preferred orientation fibres |
fibre components |
|
|
an elliptic distribution on the quaternion sphere |
Bingham distribution |
|
|
existing functions that should remain separate |
arbitrary sum |
The harmonic representation is the most general numerical representation. Any SO3Fun can be converted with SO3FunHarmonic(SO3F). This conversion is the quadrature problem.
Some operations require harmonic coefficients, and many others are much faster with them. The conversion is an approximation whenever only a finite harmonic bandwidth is retained.
From an Explicit Formula
Use SO3FunHandle when a formula or algorithm already returns one value for each input orientation. The formula could compute a Taylor factor or another physical property.
The concept page used the rotational angle as its first example. Here the same example makes the two construction steps explicit. First assign the formula to a MATLAB anonymous function.
angleFormula = @(ori) angle(ori) ./ degreeangleFormula =
function_handle with value:
@(ori)angle(ori)./degreeSecond, attach the cubic crystal symmetry and wrap the formula in an SO3FunHandle. Dividing by degree makes the returned values numerical angles in degrees.
cs = crystalSymmetry('cubic');
SO3FHandle = SO3FunHandle(angleFormula,cs)
close all
plot(SO3FHandle,'sections',4)
mtexColorbarSO3FHandle = SO3FunHandle (m3̅m → y↓→x)
eval: @(ori)angle(ori)./degree
Each panel fixes the third Euler angle. The colour varies because the smallest angle to a cubic symmetry equivalent depends on all three Euler angles.
From a Harmonic Expansion
SO3FunHarmonic stores a finite harmonic series on \(SO(3)\). Converting the handle above at bandwidth 16 retains harmonic degrees from 0 through 16.
SO3FHarmonic = SO3FunHarmonic(SO3FHandle,'bandwidth',16)
close all
plot(SO3FHarmonic,'sections',4)
mtexColorbarSO3FHarmonic = SO3FunHarmonic (m3̅m → y↓→x)
bandwidth: 16
weight: 41
The broad pattern matches the handle plot. Sharp changes are rounded and may show oscillations because the series has been cut off at degree 16. Raising the bandwidth reduces this cut-off error at additional cost.
Currently, a bandwidth of up to 128 works reasonably fast in MTEX.
The power spectrum shows how much squared coefficient magnitude belongs to each harmonic degree.
close all
plotSpektra(SO3FHarmonic,'linewidth',2,'figSize','small')
The plotted spectrum stops at degree 16 because higher coefficients were not retained. Its decay indicates how strongly the finer angular scales contribute to this approximation. See Harmonic Representation for coefficients and bandwidth in detail.
From Radial Functions
A radial function depends only on angular distance from a centre orientation. Examples include the de la Vallee Poussin, Abel--Poisson, Gauss--Weierstrass and von Mises--Fisher kernels.
Their common size parameter is the halfwidth. It is the angular distance at which the kernel value is half its value at the centre.
% define a de la Vallee Poussin kernel with 15 degree halfwidth
psi = SO3DeLaValleePoussinKernel('halfwidth',15*degree)
close all
plot(psi)psi = SO3DeLaValleePoussinKernel
bandwidth: 17
halfwidth: 15°
The curve is highest at zero angular distance and falls to half that height at 15 degrees. A smaller halfwidth therefore creates a narrower peak around every centre orientation.
A superposition of radial kernels can approximate a general function. Such SO3FunRBF objects arise naturally in ODF reconstruction from pole figures and in kernel density estimation from discrete orientations.
rngState = rng;
rng(1)
ori = orientation.rand(200,cs);
rng(rngState)
SO3FRBF = calcDensity(ori,'kernel',psi)
close all
plot(SO3FRBF,'sections',4)
mtexColorbarSO3FRBF = SO3FunRBF (m3̅m → y↓→x)
multimodal components
kernel: de la Vallee Poussin, halfwidth 15°
center: 200 orientations
The density contains overlapping peaks centred at the 200 sampled orientations. Their 15 degree halfwidth smooths the individual samples into one continuous function. See Radial ODFs for the weights, centres and kernels stored by SO3FunRBF.
From Fibre Components
A fibre is a one-dimensional family of orientations. SO3FunCBF represents a function as a superposition of components distributed along such fibres, which is useful for modelling a fibre ODF.
betaFibre = fibre.beta(cs)
SO3FCBF = SO3FunCBF(betaFibre,'halfwidth',10*degree)
close all
plot(SO3FCBF,'sections',4)
mtexColorbarbetaFibre = fibre (m3̅m → y↓→x)
h || r: (12 6 11) || (-1,-1,4)
o1 → o2: (180°,35.3°,45°) → (270°,62.8°,45°)
SO3FCBF = SO3FunCBF (m3̅m → y↓→x)
kernel: de la Vallee Poussin, halfwidth 10°
fibre : (12 6 11) || -1,-1,4
weight: 1
The high values follow the beta fibre through successive sections rather than forming an isolated orientation peak. The 10 degree halfwidth sets the spread transverse to that fibre. See Fibre ODFs for further constructions.
From a Bingham Distribution
A Bingham distribution is described by four orientation axes U and four concentration values kappa. Together they specify the directions and relative lengths of the half-axes of a four-dimensional ellipsoid.
kappa = [100 90 80 0];
U = [orientation.byAxisAngle(xvector,[0,180]*degree,cs),...
orientation.byAxisAngle([yvector,zvector],180*degree,cs)]
SO3FBingham = BinghamODF(kappa,U)
close all
plot(SO3FBingham,'sections',4)
mtexColorbarU = orientation (m3̅m → y↓→x)
size: 1 × 4
Bunge Euler angles in degree
phi1 Phi phi2
0 0 0
0 180 0
90 180 270
180 0 0
SO3FBingham = SO3FunBingham (m3̅m → y↓→x)
kappa: 100 90 80 0
weight: 1
The unequal concentration values produce an anisotropic peak. Its shape differs along the four axes instead of depending only on distance from one centre. See Bingham ODFs for fitting and evaluation.
Vector-Valued Functions
The constructors above return scalar functions. Use SO3VectorField when every orientation should map to a vector instead of one number.
References
- H.-J. Bunge, Texture Analysis in Materials Science: Mathematical Methods, Butterworths, 1982, develops harmonic representations of orientation density functions.
- C. Bingham, An Antipodally Symmetric Distribution on the Sphere, The Annals of Statistics 2 (1974), 1201-1225, introduces the distribution used by SO3FunBingham.
Next
Continue with Operations on Orientation-Dependent Functions to evaluate, combine, differentiate and integrate the objects constructed here.
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/SO3FunDefinition.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.