Operations Crystal Directions edit page

In this section we discuss basic operations with crystal directions. Therefore, lets start by importing the trigonal Quartz crystal symmetry

cs = loadCIF('quartz')
cs = crystalSymmetry
 
  mineral        : Quartz            
  symmetry       : 321               
  elements       : 6                 
  a, b, c        : 4.9, 4.9, 5.4     
  reference frame: X||a*, Y||b, Z||c*

and consider two hexagonal prism normal

m1 = Miller(1,-1,0,0,cs)
m2 = Miller(1,0,-1,0,cs)

plot(m1,'upper','labeled','backgroundColor','w')
hold on
plot(m2,'labeled','backgroundColor','w')
hold off
m1 = Miller (Quartz)
  h  k  i  l
  1 -1  0  0
 
m2 = Miller (Quartz)
  h  k  i  l
  1  0 -1  0

Zone Axes

Both prism planes intersects in a common zone axis which is orthogonal to both plane normals can is computed by

d = round(cross(m1,m2))
d = Miller (Quartz)
  U V T W
  0 0 0 1

Note that MTEX automatically switches from reciprocal to direct coordinates for displaying the zone axis.

The other way round two, not parallel, zone axes

d1 = Miller(0,0,0,1,cs,'UVTW');
d2 = Miller(1,-2,1,3,cs,'UVTW');

span a lattice plane with normal vector

round(cross(d1,d2))
ans = Miller (Quartz)
  h  k  i  l
  1  0 -1  0

Symmetrically Equivalent Crystal Directions

Since crystal lattices are symmetric lattice directions can be grouped into classes of symmetrically equivalent directions. Those groups can be derived by permuting the Miller indices (uvw). The class of all directions symmetrically equivalent to (uvw) is commonly denoted by uvw, while the class of all lattice planes symmetrically equivalent to the plane (hkl) is denoted by {hkl}. Given a lattice direction or a lattice plane all symmetrically equivalent directions and planes are computed by the command symmetrise

symmetrise(d2)
ans = Miller (Quartz)
 size: 6 x 1
   U  V  T  W
   1 -2  1  3
   1  1 -2 -3
   1  1 -2  3
   1 -2  1 -3
  -2  1  1  3
  -2  1  1 -3

As always the keyword 'antipodal' adds antipodal symmetry to this computation

symmetrise(d2,'antipodal')
ans = Miller (Quartz)
 size: 12 x 1
   U  V  T  W
   1 -2  1  3
  -1  2 -1 -3
   1  1 -2 -3
  -1 -1  2  3
   1  1 -2  3
  -1 -1  2 -3
   1 -2  1 -3
  -1  2 -1  3
  -2  1  1  3
   2 -1 -1 -3
  -2  1  1 -3
   2 -1 -1  3

Using the options 'symmetrised' and 'labeled' all symmetrically equivalent crystal directions are plotted together with their Miller indices. Lets apply this to a list of lattice planes

h = Miller({1,0,-1,0},{1,1,-2,0},{1,0,-1,1},{1,1,-2,1},{0,0,0,1},cs);

for i = 1:length(h)
  plot(h(i),'symmetrised','labeled','backgroundColor','w','grid','upper','doNotDraw')
  hold all
end
hold off
drawNow(gcm,'figSize','normal')

The command eq or == can be used to check whether two crystal directions are symmetrically equivalent. Compare

Miller(1,1,-2,0,cs) == Miller(-1,-1,2,0,cs)
ans =
  logical
   0

and

eq(Miller(1,1,-2,0,cs),Miller(-1,-1,2,0,cs),'antipodal')
ans =
  logical
   1

Angles

The angle between two crystal directions m1 and m2 is defined as the smallest angle between m1 and all symmetrically equivalent directions to m2. This angle is in radiant and it is calculated by the function angle(m1,m2)

angle(Miller(1,1,-2,0,cs),Miller(-1,-1,2,0,cs)) / degree
ans =
   60.0000

As always the keyword 'antipodal' adds antipodal symmetry to this computation

angle(Miller(1,1,-2,0,cs),Miller(-1,-1,2,0,cs),'antipodal') / degree
ans =
     0

In order to ignore the crystal symmetry, i.e., to compute the actual angle between two directions use the option 'noSymmetry'

angle(Miller(1,1,-2,0,cs),Miller(-1,-1,2,0,cs),'noSymmetry') / degree
ans =
   180

This option is available for many other functions involving crystal directions and crystal orientations.

Calculations

Essentially all the operations defined for general directions, i.e. for variables of type vector3d are also available for Miller indices. In addition Miller indices interact with crystal orientations. Consider the crystal orientation

ori = orientation.byEuler(10*degree,20*degree,30*degree,cs)
ori = orientation (Quartz → xyz)
 
  Bunge Euler angles in degree
  phi1  Phi phi2
    10   20   30

Then one can apply it to a crystal direction to find its coordinates with respect to the specimen coordinate system

ori * m1
ans = vector3d
         x          y          z
  0.219491 -0.0733607 -0.0401679

By applying a crystal symmetry one obtains the coordinates with respect to the specimen coordinate system of all crystallographically equivalent specimen directions.

p = ori * symmetrise(m1);
plot(p,'grid')

%
% The above plot is essentially the pole figure representation of the
% orientation |ori|.
%

Conversions

Converting a crystal direction which is represented by its coordinates with respect to the crystal coordinate system \(a\), \(b\), \(c\) into a representation with respect to the associated Euclidean coordinate system is done by the command vector3d.

vector3d(m1)
ans = vector3d
         x         y         z
  0.117443 -0.203417         0

Conversion into spherical coordinates requires the function polar

[theta,rho] = polar(m1)
theta =
    1.5708
rho =
    5.2360