MTEX vs. Bunge Convention edit page

MTEX defines an orientation as the coordinate map from the crystal frame into the specimen frame. Bunge, and much of the literature following him, defines it in the opposite direction: from the specimen frame into the crystal frame.

A reference frame is the coordinate system in which data are expressed. The crystal frame is fixed to the lattice, while the specimen frame is fixed to the sample. Their definitions are developed in Crystal Orientation as Coordinate Transformation.

This page assumes the Miller indices introduced in Crystal Directions and the Euler angles from Defining Rotations. Its purpose is practical: translating orientation data and formulas between MTEX and sources that use Bunge's map direction.

The two maps are inverses. This single fact explains the vector, matrix, and misorientation formulas below.

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

cs = crystalSymmetry('m-3m');
reportedEuler = [10,50,20] * degree;
ori = orientation.byEuler(reportedEuler,'Bunge',cs);
h = Miller(1,0,0,cs,'uvw');

Which Way the Coordinates Travel

An MTEX orientation takes a crystal direction, here \([100]\), into specimen coordinates.

r = ori * h
r = vector3d (y↑→x)
      x     y     z
  0.887  0.38 0.262

rotate performs the same operation. The zero angular residual confirms that the two forms agree.

rotateResidual = angle(r,rotate(h,ori)) ./ degree
rotateResidual =
     0

The Bunge map for the same physical orientation is the inverse map.

ori_Bunge = inv(ori);

It takes the specimen direction r back into crystal coordinates.

hBack = ori_Bunge * r;
hBack.dispStyle = 'uvw';
hBack
hBack = Miller (m3̅m)
  u v w
  1 0 0

A Visible Consequence of Using the Wrong Direction

Applying the inverse as though it were a crystal-to-specimen map places the crystal differently. The red arrow marks the same crystal direction \([100]\) in both panels.

cS = crystalShape.cube(cs);
bungeRotation = rotation(ori_Bunge);
rBunge = bungeRotation * vector3d(h);

mtexFig = newMtexFigure('layout',[1,2],'figSize','large');
plot(ori * cS,'faceColor',[0.35 0.6 0.85]);
hold on;
arrow3d(0.9 * normalize(r),'faceColor',[0.8 0.15 0.1]);
hold off;
text(-0.45,0.45,0.45,'MTEX map','FontWeight','bold');

nextAxis;
plot(bungeRotation * cS,'faceColor',[0.85 0.45 0.3]);
hold on;
arrow3d(0.9 * normalize(rBunge),'faceColor',[0.8 0.15 0.1]);
hold off;
text(-0.45,0.45,0.45,'Inverse map used forward','FontWeight','bold');

% plot(crystalShape) sets the camera and the layout only for a figure it created itself
for ax = mtexFig.children(:).'
  view(ax,3);
  axis(ax,'equal','vis3d','off');
end
drawNow(mtexFig,'figSize','large');

The Reported Euler Angles Stay the Same

The word "Bunge" is used for two related choices. One is the direction of the coordinate map compared on this page. The other is the Bunge Euler-angle sequence. MTEX uses that Euler-angle sequence by default.

For the same physical orientation and the same crystal and specimen frames, copy a reported Bunge Euler triple directly into MTEX. The MTEX angles of ori therefore reproduce the input triple.

mtexEuler = [ori.phi1,ori.Phi,ori.phi2] ./ degree
mtexEuler =
   10.0000   50.0000   20.0000

Do not instead ask MTEX for the angles of ori_Bunge. MTEX interprets that inverse as another MTEX rotation and reports the inverse rotation's own Euler triple.

inverseAsMtexEuler = ...
  [ori_Bunge.phi1,ori_Bunge.Phi,ori_Bunge.phi2] ./ degree
inverseAsMtexEuler =
  160.0000   50.0000  170.0000

Thus the orientation object is inverted, but the three numbers used to describe the same physical orientation are not. This design keeps MTEX Euler angles consistent with common EBSD systems, simulation packages, textbooks, and papers.

The Orientation Matrix Is Transposed

Let \(\mathbf{G}_{\mathrm{M}}\) be the MTEX matrix and \(\mathbf{G}_{\mathrm{B}}\) the Bunge matrix for the same physical orientation. Since they represent inverse rotations,

\[ \mathbf{G}_{\mathrm{M}} = \mathbf{G}_{\mathrm{B}}^{-1} = \mathbf{G}_{\mathrm{B}}^{\mathrm{T}}. \]

The transpose equality holds because a rotation matrix is orthogonal. The MTEX matrix is

mtexMatrix = ori.matrix
mtexMatrix =
    0.8872   -0.4417    0.1330
    0.3797    0.5355   -0.7544
    0.2620    0.7198    0.6428

and the difference from the transpose of the Bunge matrix is zero.

bungeMatrix = ori_Bunge.matrix;
matrixResidual = max(max(abs(mtexMatrix - bungeMatrix.')))
matrixResidual =
     0

Misorientations Come Out the Same

A misorientation is a coordinate map from one crystal frame into another. With MTEX orientations the formula is

ori1 = ori;
ori2 = orientation.byEuler(70*degree,40*degree,35*degree,'Bunge',cs);

mori = inv(ori1) * ori2;

With Bunge orientations the product has the opposite-looking formula.

ori1_Bunge = inv(ori1);
ori2_Bunge = inv(ori2);

mori_Bunge = ori1_Bunge * inv(ori2_Bunge);

Substitution shows that the two inversions cancel. The comparison below deliberately ignores crystal symmetry, so a symmetry-equivalent but different rotation could not masquerade as equality.

misorientationResidual = ...
  angle(mori,mori_Bunge,'noSymmetry') ./ degree
misorientationResidual =
   1.7075e-06

The tiny residual is floating-point roundoff. The misorientation map is therefore unchanged. Its reported Euler angles are a separate convention: when converting a Bunge misorientation triple, use the Euler angles of the inverse misorientation.

A Practical Check

Before trusting imported orientations, establish all four convention choices: the Euler-angle sequence, the map direction, the crystal frame, and the specimen frame. A wrong choice still produces valid rotations and plausible plots.

The safest check is a known direction. Verify that one indexed crystal direction maps to the specimen direction seen in the experiment. For file options, see Importing Crystal Orientations. For the independent choice of Cartesian crystal frame, see The Crystal Reference System.

Summary

quantity

conversion from Bunge to MTEX

orientation Euler angles

unchanged

orientation matrix

transpose the matrix

any formula involving an orientation

invert each orientation

misorientation map

unchanged

misorientation Euler angles

use those of the inverse misorientation

The practical consequence is precise. Euler angles may be copied when the source uses the Bunge convention and the same crystal and specimen frames. A formula written for the opposite coordinate-map direction still has to be translated.

References

Next

Theory of Misorientations develops the crystal-to-crystal map used above and its symmetry. The next page in this chapter, Pole Figures, applies orientations to crystal directions. Importing Crystal Orientations handles orientation files and their convention options.

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