<<

Rotations, rotations, and more rotations … Marc De Graef, CMU

AN OVERVIEW OF REPRESENTATIONS AND THE RELATIONS BETWEEN THEM

AFOSR MURI FA9550-12-1-0458 CMU, 7/8/15 1 Outline 2D rotations

3D rotations

7 rotation representations

Conventions (places where you can go wrong…)

Motivation

2 Outline 2D rotations

3D rotations

7 rotation representations

Conventions (places where you can go wrong…)

Motivation

PREPRINT: “Tutorial: Consistent Representations of and Conversions between 3D Rotations,” D. Rowenhorst, A.D. Rollett, G.S. Rohrer, M. Groeber, M. Jackson, P.J. Konijnenberg, M. De Graef, MSMSE, under review (2015).

2 2D Rotations

3 2D Rotations

y

x

3 2D Rotations y0 y ✓

x0

x

3 2D Rotations y0 y ✓

x0

x

ex0 cos ✓ sin ✓ ex p = ei0 = Rijej e0 sin ✓ cos ✓ ey ! ✓ y ◆ ✓ ◆✓ ◆

3 2D Rotations y0 y ✓ p x R = e0 e 0 ij i · j

x

ex0 cos ✓ sin ✓ ex p = ei0 = Rijej e0 sin ✓ cos ✓ ey ! ✓ y ◆ ✓ ◆✓ ◆

3 2D Rotations y0 y ✓ p x R = e0 e 0 ij i · j

x

ex0 cos ✓ sin ✓ ex p = ei0 = Rijej e0 sin ✓ cos ✓ ey ! ✓ y ◆ ✓ ◆✓ ◆ Rotating the reference frame while keeping the object constant is known as a passive rotation.

3 2D Rotations y0 y Assumptions: Cartesian reference frame, right-handed; positive ✓ rotation is counter-clockwise p x R = e0 e 0 ij i · j

x

ex0 cos ✓ sin ✓ ex p = ei0 = Rijej e0 sin ✓ cos ✓ ey ! ✓ y ◆ ✓ ◆✓ ◆ Rotating the reference frame while keeping the object constant is known as a passive rotation.

3 2D Rotations

4 2D Rotations y0 y ✓

x0

x

4 2D Rotations y0 y ✓

x0

x

4 2D Rotations y0 y ✓ r = ri0ei0 = rjej

x0

x

4 2D Rotations y0 y ✓ r = ri0ei0 = rjej p = ri0Rijej x0 p T =(R )jiri0ej x

4 2D Rotations y0 y ✓ r = ri0ei0 = rjej p = ri0Rijej x0 p T =(R )jiri0ej x p T r =(R ) r0 ! j ji i

4 2D Rotations y0 y ✓ r = ri0ei0 = rjej p = ri0Rijej x0 p T =(R )jiri0ej x p T r =(R ) r0 ! j ji i p r0 = R r ! i ij j

4 2D Rotations y0 y ✓ r = ri0ei0 = rjej p = ri0Rijej x0 p T =(R )jiri0ej x p T r =(R ) r0 ! j ji i p r0 = R r ! i ij j

The passive matrix converts the old coordinates into the new coordinates by left-multiplication.

4 2D Rotations

5 2D Rotations y

⇢ sin ↵ (a, b) ⇢ ↵ x ↵ cos ⇢

5 2D Rotations y (a0,b0) ⇢ sin(↵ + ✓) ✓ ⇢ sin ↵ (a, b) ⇢ ↵

) x ✓ ↵ + cos ↵ ⇢ cos( ⇢

5 2D Rotations y (a0,b0) ⇢ sin(↵ + ✓) ✓ ⇢ sin ↵ (a, b) ⇢ ↵

) x ✓ ↵ + cos ↵ (a, b)=⇢(cos ↵, sin ↵) ⇢ cos( ⇢

5 2D Rotations y (a0,b0) ⇢ sin(↵ + ✓) ✓ ⇢ sin ↵ (a, b) ⇢ ↵

) x ✓ ↵ + cos ↵ (a, b)=⇢(cos ↵, sin ↵) ⇢ cos( ⇢ # (a0,b0)=⇢(cos(↵ + ✓), sin(↵ + ✓))

5 2D Rotations y (a0,b0) ⇢ sin(↵ + ✓) ✓ ⇢ sin ↵ (a, b) ⇢ ↵

) x ✓ ↵ + cos ↵ (a, b)=⇢(cos ↵, sin ↵) ⇢ cos( ⇢ # (a0,b0)=⇢(cos(↵ + ✓), sin(↵ + ✓))

Rotating the object while keeping the reference frame constant is known as an active rotation. 5 2D Rotations

6 2D Rotations

(a0,b0)=⇢(cos(↵ + ✓), sin(↵ + ✓)) = ⇢(cos ↵ cos ✓ sin ↵ sin ✓, cos ↵ sin ✓ +sin↵ cos ✓) =(a cos ✓ b sin ✓,asin ✓ + b cos ✓) a0 cos ✓ sin ✓ a = ! b0 sin ✓ cos ✓ b ✓ ◆ ✓ ◆✓ ◆

6 2D Rotations

(a0,b0)=⇢(cos(↵ + ✓), sin(↵ + ✓)) = ⇢(cos ↵ cos ✓ sin ↵ sin ✓, cos ↵ sin ✓ +sin↵ cos ✓) =(a cos ✓ b sin ✓,asin ✓ + b cos ✓) a0 cos ✓ sin ✓ a = ! b0 sin ✓ cos ✓ b ✓ ◆ ✓ ◆✓ ◆

a p r0 = R (✓)r = R ( ✓)r

6 2D Rotations

(a0,b0)=⇢(cos(↵ + ✓), sin(↵ + ✓)) = ⇢(cos ↵ cos ✓ sin ↵ sin ✓, cos ↵ sin ✓ +sin↵ cos ✓) =(a cos ✓ b sin ✓,asin ✓ + b cos ✓) a0 cos ✓ sin ✓ a = ! b0 sin ✓ cos ✓ b ✓ ◆ ✓ ◆✓ ◆

a p r0 = R (✓)r = R ( ✓)r

cos ✓ sin ✓ Ra =(Rp)T = sin ✓ cos ✓ ✓ ◆

6 2D Rotations: Summary

7 2D Rotations: Summary

cos ✓ sin ✓ Ra(✓)= sin ✓ cos ✓ ✓ ◆

7 2D Rotations: Summary

cos ✓ sin ✓ Ra(✓)= sin ✓ cos ✓ ✓ ◆ cos ✓ sin ✓ Rp(✓)= =(Ra(✓))T sin ✓ cos ✓ ✓ ◆

7 2D Rotations: Summary

cos ✓ sin ✓ Ra(✓)= sin ✓ cos ✓ ✓ ◆ cos ✓ sin ✓ Rp(✓)= =(Ra(✓))T sin ✓ cos ✓ ✓ ◆

a Active: r0 = R (✓)r

7 2D Rotations: Summary

cos ✓ sin ✓ Ra(✓)= sin ✓ cos ✓ ✓ ◆ cos ✓ sin ✓ Rp(✓)= =(Ra(✓))T sin ✓ cos ✓ ✓ ◆

a Active: r0 = R (✓)r

p a Passive: r0 = R (✓)r = R ( ✓)r p ei0 = Rij(✓)ej

7 Example

(2,3) (2,3)

-45° 45°

45°

8 Example

ACTIVE

(2,3) (2,3)

-45° 45°

45°

8 Example

ACTIVE PASSIVE

(2,3) (2,3)

-45° 45°

45°

8 Complex Numbers POLAR REPRESENTATION

GRAPHICAL REPRESENTATION

9 Complex Numbers POLAR REPRESENTATION z = ⇢ei✓ = ⇢(cos ✓ +isin✓)

1 b a = ⇢ cos ✓; b = ⇢ sin ✓; ⇢ = z ; ✓ = tan | | a GRAPHICAL REPRESENTATION

9 Complex Numbers POLAR REPRESENTATION z = ⇢ei✓ = ⇢(cos ✓ +isin✓)

1 b a = ⇢ cos ✓; b = ⇢ sin ✓; ⇢ = z ; ✓ = tan | | a GRAPHICAL REPRESENTATION iy b ⇢

✓ a x

9 Complex Numbers POLAR REPRESENTATION z = ⇢ei✓ = ⇢(cos ✓ +isin✓)

1 b a = ⇢ cos ✓; b = ⇢ sin ✓; ⇢ = z ; ✓ = tan | | a GRAPHICAL REPRESENTATION CONNECTION TO ROTATIONS i✓ iy e z b ⇢

✓ a x

9 Complex Numbers POLAR REPRESENTATION z = ⇢ei✓ = ⇢(cos ✓ +isin✓)

1 b a = ⇢ cos ✓; b = ⇢ sin ✓; ⇢ = z ; ✓ = tan | | a GRAPHICAL REPRESENTATION CONNECTION TO ROTATIONS i✓ iy e z b 1 ⇡ z = (1 + i); ✓ = ⇢ p2 4 2 ✓ 1 ei✓z = (1 + i) =i p2 a x ✓ ◆

9 Complex Numbers POLAR REPRESENTATION z = ⇢ei✓ = ⇢(cos ✓ +isin✓)

1 b a = ⇢ cos ✓; b = ⇢ sin ✓; ⇢ = z ; ✓ = tan | | a GRAPHICAL REPRESENTATION CONNECTION TO ROTATIONS i✓ iy e z b 1 ⇡ z = (1 + i); ✓ = ⇢ p2 4 2 ✓ 1 ei✓z = (1 + i) =i p2 a x ✓ ◆

9 Complex Numbers POLAR REPRESENTATION z = ⇢ei✓ = ⇢(cos ✓ +isin✓)

1 b a = ⇢ cos ✓; b = ⇢ sin ✓; ⇢ = z ; ✓ = tan | | a GRAPHICAL REPRESENTATION CONNECTION TO ROTATIONS i✓ iy e z b 1 ⇡ z = (1 + i); ✓ = ⇢ p2 4 2 ✓ 1 ei✓z = (1 + i) =i p2 a x ✓ ◆ 2D ROTATION = MULTIPLICATION BY A COMPLEX NUMBER 9 3D Rotations

10 3D Rotations

In 3D, we need a rotation axis, and an ω (we ignore the case of a rotation axis that does not go through the origin)

For the axis, we can specify a set of three direction cosines, and this requires the choice of a reference frame and a handedness.

10 3D Rotations

In 3D, we need a rotation axis, and an angle ω (we ignore the case of a rotation axis that does not go through the origin)

For the axis, we can specify a set of three direction cosines, and this requires the choice of a reference frame and a handedness.

ez

β3 n

β2 β1 ey

ex

10 3D Rotations

In 3D, we need a rotation axis, and an angle ω (we ignore the case of a rotation axis that does not go through the origin)

For the axis, we can specify a set of three direction cosines, and this requires the choice of a reference frame and a handedness.

ez nˆ = (cos 1, cos 2, cos 3) β3 n cos2 + cos2 + cos2 =1 β2 1 2 3 β1 ey

ex

10 3D Rotations

In 3D, we need a rotation axis, and an angle ω (we ignore the case of a rotation axis that does not go through the origin)

For the axis, we can specify a set of three direction cosines, and this requires the choice of a reference frame and a handedness.

ez nˆ = (cos 1, cos 2, cos 3) β3 n cos2 + cos2 + cos2 =1 β2 1 2 3 β1 ey

ex

Representation 1: Axis-angle pair: (nˆ, !)

10 Core rotation conventions

11 Core rotation conventions

Convention 1: When dealing with 3D rotations, all cartesian reference frames will be right-handed.

11 Core rotation conventions

Convention 1: When dealing with 3D rotations, all cartesian reference frames will be right-handed. Convention 2: A rotation angle ! is taken to be positive for a counterclockwise rotation when viewing from the end point of the axis nˆ towards the origin.

11 Core rotation conventions

Convention 1: When dealing with 3D rotations, all cartesian reference frames will be right-handed. Convention 2: A rotation angle ! is taken to be positive for a counterclockwise rotation when viewing from the end point of the axis unit vector nˆ towards the origin.

Convention 3: Rotations will be interpreted in the passive sense.

11 Core rotation conventions

Convention 1: When dealing with 3D rotations, all cartesian reference frames will be right-handed. Convention 2: A rotation angle ! is taken to be positive for a counterclockwise rotation when viewing from the end point of the axis unit vector nˆ towards the origin.

Convention 3: Rotations will be interpreted in the passive sense.

Convention 4: In !@n, the angle ! lies in the interval [0, ⇡].

11 Core rotation conventions

Convention 1: When dealing with 3D rotations, all cartesian reference frames will be right-handed. Convention 2: A rotation angle ! is taken to be positive for a counterclockwise rotation when viewing from the end point of the axis unit vector nˆ towards the origin.

Convention 3: Rotations will be interpreted in the passive sense.

Convention 4: In !@n, the angle ! lies in the interval [0, ⇡].

Convention 5: Euler angle triplets ✓ =('1, , '2) use the Bunge convention, with angular ranges ' [0, 2⇡], [0, ⇡], and ' [0, 2⇡]. 1 2 2 2 2

11 Euler angle representation Euler has shown that any 3D rotation can be decomposed into a sequence of, at the most, three separate rotations around mutually rotation axes, which are usually chosen to be the cartesian coordinate axes.

One can pick three different axes, (xyz) in any order, so that produces a total of 6 possible angle triplets, commonly known as Tait-Bryan (heading-elevation-bank; yaw-pitch-roll; …)

Or, one picks axes with the first and third around the same name axis, e.g. (zxz) or (yxy); the resulting angle triplets are known as Euler angles.

Euler angles, like latitude and longitude on the sphere, suffer from a degeneracy at certain points, which is an undesirable and sometimes problematic property.

12 Euler angle representation

13 Euler angle representation

Bunge convention (zxz):('1, , '2)

13 Euler angle representation

Bunge convention (zxz):('1, , '2) z

y x

13 Euler angle representation

Bunge convention (zxz):('1, , '2) zz’

y’

y x '1 x’

13 Euler angle representation

Bunge convention (zxz):('1, , '2) zz’ y’’

z’’

y’

y x '1 x’x’’

13 Euler angle representation

Bunge convention (zxz):('1, , '2) zz’ y’’ y’’’ z’’z’’’ x’’’ '2 y’

y x '1 x’x’’

13 Euler angle representation

Bunge convention (zxz):('1, , '2) zz’ y’’ y’’’ z’’z’’’ x’’’ '2 y’

y x '1 x’x’’

✓ =('1, , '2) 13 Euler angle space

14 Euler angle space

14 Euler angle space

This is a periodic space !!!! This is a periodic space !!!! This is a periodic space !!!! This is a

14 Euler angle space

14 Euler to rotation matrix Euler to rotation matrix Euler to rotation matrix Euler to rotation matrix Euler to rotation matrix

Note the minus sign!!! Contradiction ? Contradiction ? Contradiction ? Contradiction ? Contradiction ? Contradiction ?

So, which one is it ? Contradiction ?

So, which one is it ? Contradiction ?

So, which one is it ?

This is counterintuitive, but mathematically correct !!! Motivation

17 Motivation Over the years, I have found ambiguities in the rules for combining two rotations, as well as discrepancies in the transformation equations between rotation representations.

17 Motivation Over the years, I have found ambiguities in the rules for combining two rotations, as well as discrepancies in the transformation equations between rotation representations.

In addition, the concept of Fundamental Zone appears to be ill understood by the community.

17 Motivation Over the years, I have found ambiguities in the rules for combining two rotations, as well as discrepancies in the transformation equations between rotation representations.

In addition, the concept of Fundamental Zone appears to be ill understood by the community.

So, around the time of the 3D conference in Annecy, we decided to have a small-scale round-robin to see whether or not we all agree on the various rotation representations…

17 Motivation Over the years, I have found ambiguities in the rules for combining two rotations, as well as discrepancies in the transformation equations between rotation representations.

In addition, the concept of Fundamental Zone appears to be ill understood by the community.

So, around the time of the 3D conference in Annecy, we decided to have a small-scale round-robin to see whether or not we all agree on the various rotation representations…

Tony Rollett, Greg Rohrer, Dave Rowenhorst, Mike Jackson, Mike Groeber, Peter Konijnenberg, and myself.

17 Motivation Over the years, I have found ambiguities in the rules for combining two rotations, as well as discrepancies in the transformation equations between rotation representations.

In addition, the concept of Fundamental Zone appears to be ill understood by the community.

So, around the time of the 3D conference in Annecy, we decided to have a small-scale round-robin to see whether or not we all agree on the various rotation representations…

Tony Rollett, Greg Rohrer, Dave Rowenhorst, Mike Jackson, Mike Groeber, Peter Konijnenberg, and myself.

Warm-up question: for the Euler angle triplet below, compute all the alternative rotation representations.

17 Motivation Over the years, I have found ambiguities in the rules for combining two rotations, as well as discrepancies in the transformation equations between rotation representations.

In addition, the concept of Fundamental Zone appears to be ill understood by the community.

So, around the time of the 3D conference in Annecy, we decided to have a small-scale round-robin to see whether or not we all agree on the various rotation representations…

Tony Rollett, Greg Rohrer, Dave Rowenhorst, Mike Jackson, Mike Groeber, Peter Konijnenberg, and myself.

Warm-up question: for the Euler angle triplet below, compute all the alternative rotation representations.

✓ =(2.721670, 0.148401, 0.148886) rad = (155.940, 8.50275, 8.53054)

17 Surprise… No two participants agreed on all representations!

mostly discrepancies in signs

18 Surprise… No two participants agreed on all representations!

mostly discrepancies in signs

Table 1: Axis-Angle Results Person x y z Angle DeGraef 0.020992 0.071809 0.997197 164.513710 Rowenhorst MISSING MISSING MISSING MISSING DREAM3D 0.02099191 0.07180921 0.9971974 164.51373 Rollett 0.02099190 0.071809206 0.9971974 164.51373 Rohrer 0.02099190 0.071809247 0.9971980 164.51373 Konijnenberg -0.020992 -0.071809 -0.997197 164.51373

18 19 Table 1: Rodrigues Results Person x y z DeGraef 0.154384 0.528118 7.333844 Rowenhorst MISSING MISSING MISSING DREAM3D 0.154384 0.528118 7.333844 Rollett 0.154384 0.528118 7.333848 Rohrer MISSING MISSING MISSING Konijnenberg -0.154384 -0.528118 -7.333848

19 Table 1: Rodrigues Results Person x y z DeGraef 0.154384 0.528118 7.333844 Rowenhorst MISSING MISSING MISSING DREAM3D 0.154384 0.528118 7.333844 Rollett 0.154384 0.528118 7.333848 Rohrer MISSING MISSING MISSING Konijnenberg -0.154384 -0.528118 -7.333848

Table 1: Results Person w x y z DeGraef 0.134732 -0.020801 -0.071154 -0.988105 Rowenhorst 0.134732 -0.020801 -0.071154 -0.988105 DREAM3D 0.134732 0.020801 0.071154 0.988105 Rollett 0.134732 0.020801 0.071154 0.988105 Rohrer MISSING MISSING MISSING MISSING Konijnenberg 0.134732 -0.020801 -0.071154 -0.988105

19 20 Everybody agrees on the rotation matrix:

0.962829 0.269219 0.021933 0.263299 0.953569 0.146221 0 0.060280 0.135011 0.989009 1 @ A

20 Everybody agrees on the rotation matrix:

0.962829 0.269219 0.021933 0.263299 0.953569 0.146221 0 0.060280 0.135011 0.989009 1 @ A These results indicate that something is clearly incorrect.

20 Everybody agrees on the rotation matrix:

0.962829 0.269219 0.021933 0.263299 0.953569 0.146221 0 0.060280 0.135011 0.989009 1 @ A These results indicate that something is clearly incorrect. It took me pretty much the entire 2014 Summer to figure out how to resolve this problem.

20 Everybody agrees on the rotation matrix:

0.962829 0.269219 0.021933 0.263299 0.953569 0.146221 0 0.060280 0.135011 0.989009 1 @ A These results indicate that something is clearly incorrect. It took me pretty much the entire 2014 Summer to figure out how to resolve this problem.

So, who turned out to be completely correct?

20 Everybody agrees on the rotation matrix:

0.962829 0.269219 0.021933 0.263299 0.953569 0.146221 0 0.060280 0.135011 0.989009 1 @ A These results indicate that something is clearly incorrect. It took me pretty much the entire 2014 Summer to figure out how to resolve this problem.

So, who turned out to be completely correct?

Peter Konijnenberg. Everybody else had at least one inconsistency...

20 Core rotation conventions

The solution to the problem is that we need to agree on one more convention;

We will introduce a number, P, which is equal to +1 or -1; in the rotations library, you can chose which one to use, but once you make that choice, everything else is fixed, including the rotation interpretation.

In the remainder of this talk, we will use modified definitions that include P; all these relations are implemented in DREAM.3D 6.0.0, with the choice P=+1 (set at compile time) 3D Rotation Representations

22 3D Rotation Representations The axis-angle pair is essentially useless for computational purposes…

22 3D Rotation Representations The axis-angle pair is essentially useless for computational purposes…

Based on the axis-angle pair, we can introduce a series of representations/parameterizations based on the general form:

22 3D Rotation Representations The axis-angle pair is essentially useless for computational purposes…

Based on the axis-angle pair, we can introduce a series of representations/parameterizations based on the general form: nˆf(!)

22 3D Rotation Representations The axis-angle pair is essentially useless for computational purposes…

Based on the axis-angle pair, we can introduce a series of representations/parameterizations based on the general form: nˆf(!) f must be a well-behaved monotonic function of the angle

22 3D Rotation Representations The axis-angle pair is essentially useless for computational purposes…

Based on the axis-angle pair, we can introduce a series of representations/parameterizations based on the general form: nˆf(!) f must be a well-behaved monotonic function of the angle

All rotation representations of this form are known as neo-Eulerian representations [Frank]

rotation vector

Rodrigues-Frank vector

Homochoric vector

quaternion vector part

stereographic vector

22 3D Rotation Representations The axis-angle pair is essentially useless for computational purposes…

Based on the axis-angle pair, we can introduce a series of representations/parameterizations based on the general form: nˆf(!) f must be a well-behaved monotonic function of the angle

All rotation representations of this form are known as neo-Eulerian representations [Frank]

rotation vector P nˆ ! ! Rodrigues-Frank vector P nˆ tan 2 1 3 3 Homochoric vector P nˆ (! sin !) 4  ! quaternion vector part P nˆ sin 2 ! stereographic vector P nˆ tan 4 22 3D Rotation Representations The axis-angle pair is essentially useless for computational purposes…

Based on the axis-angle pair, we can introduce a series of representations/parameterizations based on the general form: nˆf(!) f must be a well-behaved monotonic function of the angle

All rotation representations of this form are known as neo-Eulerian representations [Frank] axis-angle pair rotation vector P nˆ ! ( P nˆ, !) ! Rodrigues-Frank vector P nˆ tan 2 1 3 3 Homochoric vector P nˆ (! sin !) 4  ! quaternion vector part P nˆ sin 2 ! stereographic vector P nˆ tan 4 22 3D Rotations

P nˆ ! Straight multiplication is not used very often

! P nˆ tan Rodrigues vector is very important, but computationally, 2 a 180° rotation can be problematic because the tan function produces infinity …

! P nˆ sin We’ll deal with on the following slides; they 2 require a bit of explanation…

1 3 3 P nˆ (! sin !) The homochoric representation only makes sense after 4 you understand quaternions  ! P nˆ tan very useful for visualization of rotations and textures 4

23 neo-Eulerian scaling functions

3.0

2.5

2.0

1.5

1.0

0.5 Neo-eulerian function f ( ω )

0.0 0.0 0.5 1.0 1.5 2.0 2.5 3.0 Rotation angle ω Complex numbers and rotations in 3D?

try z = a +ib +jc with i2 =j2 = 1 and ij = ji

25 Complex numbers and rotations in 3D?

try z = a +ib +jc with i2 =j2 = 1 and ij = ji Turns out that one can get very far with this definition, except for the fact that it is impossible to obtain a multiplicative inverse (in other words, if z represents a rotation, then there would not necessarily be an opposite rotation...)

25 Complex numbers and rotations in 3D?

try z = a +ib +jc with i2 =j2 = 1 and ij = ji Turns out that one can get very far with this definition, except for the fact that it is impossible to obtain a multiplicative inverse (in other words, if z represents a rotation, then there would not necessarily be an opposite rotation...)

In 1844, W.R. Hamilton discovered that adding another term solved the problem; he introduced the notion of quaternions (meaning numbers with 4 components); quaternion multiplication is non-commutative.

25 Complex numbers and rotations in 3D?

try z = a +ib +jc with i2 =j2 = 1 and ij = ji Turns out that one can get very far with this definition, except for the fact that it is impossible to obtain a multiplicative inverse (in other words, if z represents a rotation, then there would not necessarily be an opposite rotation...)

In 1844, W.R. Hamilton discovered that adding another term solved the problem; he introduced the notion of quaternions (meaning numbers with 4 components); quaternion multiplication is non-commutative. q = q0 + q1i+q2j+q3k

25 Quaternions q = a +ib +jc +kd i2 =j2 =k2 = 1 ij = ji = k jk = kj = i ki = ik = j

26 Quaternions q = a +ib +jc +kd i2 =j2 =k2 = 1 ij = ji = k jk = kj = i ki = ik = j quaternion multiplication is non-commutative

26 Quaternions q = a +ib +jc +kd i2 =j2 =k2 = 1 ij = ji = k jk = kj = i ki = ik = j quaternion multiplication is non-commutative q =[a, b, c, d] a is the scalar part, (b, c, d) the vector part

26 Quaternions q = a +ib +jc +kd i2 =j2 =k2 = 1 ij = ji = k jk = kj = i ki = ik = j quaternion multiplication is non-commutative q =[a, b, c, d] a is the scalar part, (b, c, d) the vector part q =[a, q] q = bi+cj+dk

26 Quaternions q = a +ib +jc +kd i2 =j2 =k2 = 1 ij = ji = k jk = kj = i ki = ik = j quaternion multiplication is non-commutative q =[a, b, c, d] a is the scalar part, (b, c, d) the vector part q =[a, q] q = bi+cj+dk q =[0,b,c,d] is a pure quaternion, also known as a versor

26 Quaternions q = a +ib +jc +kd i2 =j2 =k2 = 1 ij = ji = k jk = kj = i ki = ik = j quaternion multiplication is non-commutative q =[a, b, c, d] a is the scalar part, (b, c, d) the vector part q =[a, q] q = bi+cj+dk q =[0,b,c,d] is a pure quaternion, also known as a versor

quaternion conjugation: q⇤ =[a, q] 2 2 2 2 2 quaternion : q = qq⇤ = a + b + c + d | |

26 Quaternion Operations

27 Quaternion Operations ADDITION

[p0,p1,p2,p3]+[q0,q1,q2,q3]=[p0 + q0,p1 + q1,p2 + q2,p3 + q3]

27 Quaternion Operations ADDITION

[p0,p1,p2,p3]+[q0,q1,q2,q3]=[p0 + q0,p1 + q1,p2 + q2,p3 + q3] MULTIPLICATION [p ,p ,p ,p ][q ,q ,q ,q ]=[p q p q p q p q , 0 1 2 3 0 1 2 3 0 0 1 1 2 2 3 3 p q + q p + p q p q , 0 1 0 1 2 3 3 2 p q + q p + p q p q , 0 2 0 2 3 1 1 3 p q + q p + p q p q ] 0 3 0 3 1 2 2 1

27 Quaternion Operations ADDITION

[p0,p1,p2,p3]+[q0,q1,q2,q3]=[p0 + q0,p1 + q1,p2 + q2,p3 + q3] MULTIPLICATION [p ,p ,p ,p ][q ,q ,q ,q ]=[p q p q p q p q , 0 1 2 3 0 1 2 3 0 0 1 1 2 2 3 3 p q + q p + p q p q , 0 1 0 1 2 3 3 2 p q + q p + p q p q , 0 2 0 2 3 1 1 3 p q + q p + p q p q ] 0 3 0 3 1 2 2 1 [p , p][q , q]=[p q p q,p q + q p + p q] 0 0 0 0 · 0 0 ⇥

27 Quaternion Operations ADDITION

[p0,p1,p2,p3]+[q0,q1,q2,q3]=[p0 + q0,p1 + q1,p2 + q2,p3 + q3] MULTIPLICATION [p ,p ,p ,p ][q ,q ,q ,q ]=[p q p q p q p q , 0 1 2 3 0 1 2 3 0 0 1 1 2 2 3 3 p q + q p + p q p q , 0 1 0 1 2 3 3 2 pq = qp p q + q p + p q p q , 6 0 2 0 2 3 1 1 3 p q + q p + p q p q ] 0 3 0 3 1 2 2 1 [p , p][q , q]=[p q p q,p q + q p + p q] 0 0 0 0 · 0 0 ⇥

27 Quaternion Operations ADDITION

[p0,p1,p2,p3]+[q0,q1,q2,q3]=[p0 + q0,p1 + q1,p2 + q2,p3 + q3] MULTIPLICATION [p ,p ,p ,p ][q ,q ,q ,q ]=[p q p q p q p q , 0 1 2 3 0 1 2 3 0 0 1 1 2 2 3 3 p q + q p + p q p q , 0 1 0 1 2 3 3 2 pq = qp p q + q p + p q p q , 6 0 2 0 2 3 1 1 3 p q + q p + p q p q ] 0 3 0 3 1 2 2 1 [p , p][q , q]=[p q p q,p q + q p + p q] 0 0 0 0 · 0 0 ⇥

27 Quaternion Operations ADDITION

[p0,p1,p2,p3]+[q0,q1,q2,q3]=[p0 + q0,p1 + q1,p2 + q2,p3 + q3] MULTIPLICATION [p ,p ,p ,p ][q ,q ,q ,q ]=[p q p q p q p q , 0 1 2 3 0 1 2 3 0 0 1 1 2 2 3 3 p q + q p + p q p q , 0 1 0 1 2 3 3 2 pq = qp p q + q p + p q p q , 6 0 2 0 2 3 1 1 3 p q + q p + p q p q ] 0 3 0 3 1 2 2 1 [p , p][q , q]=[p q p q,p q + q p + p q] 0 0 0 0 · 0 0 ⇥

27 Quaternion Operations ADDITION

[p0,p1,p2,p3]+[q0,q1,q2,q3]=[p0 + q0,p1 + q1,p2 + q2,p3 + q3] MULTIPLICATION [p ,p ,p ,p ][q ,q ,q ,q ]=[p q p q p q p q , 0 1 2 3 0 1 2 3 0 0 1 1 2 2 3 3 p q + q p + p q p q , 0 1 0 1 2 3 3 2 pq = qp p q + q p + p q p q , 6 0 2 0 2 3 1 1 3 p q + q p + p q p q ] 0 3 0 3 1 2 2 1 [p , p][q , q]=[p q p q,p q + q p + p q] 0 0 0 0 · 0 0 ⇥ pq + qp = 2[p q p q,p q + q p] 0 0 · 0 0 pq qp = 2[0, p q] ⇥

27 Quaternion Operations ADDITION

[p0,p1,p2,p3]+[q0,q1,q2,q3]=[p0 + q0,p1 + q1,p2 + q2,p3 + q3] MULTIPLICATION [p ,p ,p ,p ][q ,q ,q ,q ]=[p q p q p q p q , 0 1 2 3 0 1 2 3 0 0 1 1 2 2 3 3 p q + q p + p q p q , 0 1 0 1 2 3 3 2 pq = qp p q + q p + p q p q , 6 0 2 0 2 3 1 1 3 p q + q p + p q p q ] 0 3 0 3 1 2 2 1 [p , p][q , q]=[p q p q,p q + q p + p q] 0 0 0 0 · 0 0 ⇥ pq + qp = 2[p q p q,p q + q p] 0 0 · 0 0 pq qp = 2[0, p q] ⇥ INVERSE 1 2 2 2 2 2 q = q⇤/ q =[q , q]/(q + q + q + q ) | | 0 0 1 2 3 27 Example 1 1 1 1 Multiply the following quaternions: p = 2 , 2 , 2 , 2 and q = 1 , 1 , 1 , 1 using the vectorial expression. 2 2 2 2 ⇥ ⇤ ⇥ ⇤

28 Example 1 1 1 1 Multiply the following quaternions: p = 2 , 2 , 2 , 2 and q = 1 , 1 , 1 , 1 using the vectorial expression. 2 2 2 2 ⇥ ⇤ ⇥ 1 1 ⇤ 1 1 1 1 1 1 p0 = 2 , q0 = 2 , p =[2 , 2 , 2 ] and q =[2 , 2 , 2 ]

28 Example 1 1 1 1 Multiply the following quaternions: p = 2 , 2 , 2 , 2 and q = 1 , 1 , 1 , 1 using the vectorial expression. 2 2 2 2 ⇥ ⇤ ⇥ 1 1 ⇤ 1 1 1 1 1 1 p0 = 2 , q0 = 2 , p =[2 , 2 , 2 ] and q =[2 , 2 , 2 ]

1 1 Scalar part: p0q0 p q = 3 =1 · 4 ⇥ 4

28 Example 1 1 1 1 Multiply the following quaternions: p = 2 , 2 , 2 , 2 and q = 1 , 1 , 1 , 1 using the vectorial expression. 2 2 2 2 ⇥ ⇤ ⇥ 1 1 ⇤ 1 1 1 1 1 1 p0 = 2 , q0 = 2 , p =[2 , 2 , 2 ] and q =[2 , 2 , 2 ]

1 1 Scalar part: p0q0 p q = 3 =1 · 4 ⇥ 4 Vector part: p q + q p + p q 0 0 ⇥

28 Example 1 1 1 1 Multiply the following quaternions: p = 2 , 2 , 2 , 2 and q = 1 , 1 , 1 , 1 using the vectorial expression. 2 2 2 2 ⇥ ⇤ ⇥ 1 1 ⇤ 1 1 1 1 1 1 p0 = 2 , q0 = 2 , p =[2 , 2 , 2 ] and q =[2 , 2 , 2 ]

1 1 Scalar part: p0q0 p q = 3 =1 · 4 ⇥ 4 Vector part: p q + q p + p q 0 0 ⇥

1 1 2 2 1 1 1 1 2 + 2 2 0 1 1 2 0 1 1 2 2 @ A @ A

(0, 0, 0)

28 Example 1 1 1 1 Multiply the following quaternions: p = 2 , 2 , 2 , 2 and q = 1 , 1 , 1 , 1 using the vectorial expression. 2 2 2 2 ⇥ ⇤ ⇥ 1 1 ⇤ 1 1 1 1 1 1 p0 = 2 , q0 = 2 , p =[2 , 2 , 2 ] and q =[2 , 2 , 2 ]

1 1 Scalar part: p0q0 p q = 3 =1 · 4 ⇥ 4 Vector part: p0q + q0p + p q ⇥ 1 1 1 1 1 1 2 2 2 2 2 2 1 1 1 2 1 2 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 + 2 2 0 1 1 2 0 1 1 2 2 @ A @ A

(0, 0, 0)

28 Example 1 1 1 1 Multiply the following quaternions: p = 2 , 2 , 2 , 2 and q = 1 , 1 , 1 , 1 using the vectorial expression. 2 2 2 2 ⇥ ⇤ ⇥ 1 1 ⇤ 1 1 1 1 1 1 p0 = 2 , q0 = 2 , p =[2 , 2 , 2 ] and q =[2 , 2 , 2 ]

1 1 Scalar part: p0q0 p q = 3 =1 · 4 ⇥ 4 Vector part: p0q + q0p + p q ⇥ 1 1 1 1 1 1 2 2 2 2 2 2 1 1 1 2 1 2 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 + 2 2 0 1 1 2 0 1 1 2 2 @ A @ A

(0, 0, 0)

28 Example 1 1 1 1 Multiply the following quaternions: p = 2 , 2 , 2 , 2 and q = 1 , 1 , 1 , 1 using the vectorial expression. 2 2 2 2 ⇥ ⇤ ⇥ 1 1 ⇤ 1 1 1 1 1 1 p0 = 2 , q0 = 2 , p =[2 , 2 , 2 ] and q =[2 , 2 , 2 ]

1 1 Scalar part: p0q0 p q = 3 =1 · 4 ⇥ 4 Vector part: p0q + q0p + p q ⇥ 1 1 1 1 1 1 2 2 2 2 2 2 1 1 1 2 1 2 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 + 2 ⇥ ⇥ ⇥ 2 0 1 1 2 0 1 1 2 2 @ A @ A

(0, 0, 0)

28 Example 1 1 1 1 Multiply the following quaternions: p = 2 , 2 , 2 , 2 and q = 1 , 1 , 1 , 1 using the vectorial expression. 2 2 2 2 ⇥ ⇤ ⇥ 1 1 ⇤ 1 1 1 1 1 1 p0 = 2 , q0 = 2 , p =[2 , 2 , 2 ] and q =[2 , 2 , 2 ]

1 1 Scalar part: p0q0 p q = 3 =1 · 4 ⇥ 4 Vector part: p0q + q0p + p q ⇥ 1 1 1 1 1 1 2 2 2 2 2 2 1 1 1 2 1 2 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 + 2 ⇥ ⇥ ⇥ 2 0 1 1 2 0 1 1 2 2 @ A @ A (0, 0, 0)

(0, 0, 0)

28 Example 1 1 1 1 Multiply the following quaternions: p = 2 , 2 , 2 , 2 and q = 1 , 1 , 1 , 1 using the vectorial expression. 2 2 2 2 ⇥ ⇤ ⇥ 1 1 ⇤ 1 1 1 1 1 1 p0 = 2 , q0 = 2 , p =[2 , 2 , 2 ] and q =[2 , 2 , 2 ]

1 1 Scalar part: p0q0 p q = 3 =1 · 4 ⇥ 4 Vector part: p0q + q0p + p q ⇥ 1 1 1 1 1 1 2 2 2 2 2 2 1 1 1 2 1 2 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 + 2 ⇥ ⇥ ⇥ 2 0 1 1 2 0 1 1 2 2 @ A @ A (0, 0, 0)

(0, 0, 0) pq =[1, 0, 0, 0] !

28 Example 1 1 1 1 Multiply the following quaternions: p = 2 , 2 , 2 , 2 and q = 1 , 1 , 1 , 1 using the vectorial expression. 2 2 2 2 ⇥ ⇤ ⇥ 1 1 ⇤ 1 1 1 1 1 1 p0 = 2 , q0 = 2 , p =[2 , 2 , 2 ] and q =[2 , 2 , 2 ]

1 1 Scalar part: p0q0 p q = 3 =1 · 4 ⇥ 4 Vector part: p0q + q0p + p q ⇥ 1 1 1 1 1 1 2 2 2 2 2 2 1 1 1 2 1 2 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 + 2 ⇥ ⇥ ⇥ 2 0 1 1 2 0 1 1 2 2 @ A @ A (0, 0, 0)

(0, 0, 0) pq =[1, 0, 0, 0] ! 2 This is to be expected since q = p⇤, so that pp⇤ = p = 1. 28 | | Unit Quaternions

Recall that unit complex numbers can be written in exponential form as: ei✓

We know that they represent 2D rotations

In the same way, unit quaternions represent 3D rotations q =1 | |

29 Unit Quaternions Given an axis-angle pair, computing the corresponding quaternion is very easy: ! ! ( P nˆ, !) cos , P nˆ sin ! 2 2 h i Example: For the axis-angle pair ([111], 120°), what is the quaternion representation for P=-1?

30 Unit Quaternions Given an axis-angle pair, computing the corresponding quaternion is very easy: ! ! ( P nˆ, !) cos , P nˆ sin ! 2 2 h quaternion vectori Example: For the axis-angle pair ([111], 120°), what is the quaternion representation for P=-1?

30 Unit Quaternions Given an axis-angle pair, computing the corresponding quaternion is very easy: ! ! ( P nˆ, !) cos , P nˆ sin ! 2 2 h quaternion vectori Example: For the axis-angle pair ([111], 120°), what is the quaternion representation for P=-1?

2⇡ ! = 120 = 3

30 Unit Quaternions Given an axis-angle pair, computing the corresponding quaternion is very easy: ! ! ( P nˆ, !) cos , P nˆ sin ! 2 2 h quaternion vectori Example: For the axis-angle pair ([111], 120°), what is the quaternion representation for P=-1?

2⇡ ⇡ 1 ⇡ p3 ! = 120 = cos = , sin = 3 ! 3 2 3 2

30 Unit Quaternions Given an axis-angle pair, computing the corresponding quaternion is very easy: ! ! ( P nˆ, !) cos , P nˆ sin ! 2 2 h quaternion vectori Example: For the axis-angle pair ([111], 120°), what is the quaternion representation for P=-1?

2⇡ ⇡ 1 ⇡ p3 ! = 120 = cos = , sin = 3 ! 3 2 3 2

! ! 1 p3 1 1 1 1 1 cos , sin nˆ = , (1, 1, 1) q = , , , 2 2 "2 2 p3 # ! 2 2 2 2 h i 

30 Equivalent Rotations ! ! q(!)= cos , P nˆ sin 2 2 h i ! ! q(2⇡ + !)= cos(⇡ + ), P nˆ sin(⇡ + ) ; 2 2 h ! ! i = cos ,Pnˆ sin ; 2 2 h ! !i = cos , P nˆ sin ; 2 2 = qh(!). i

31 Equivalent Rotations ! ! q(!)= cos , P nˆ sin 2 2 h i ! ! q(2⇡ + !)= cos(⇡ + ), P nˆ sin(⇡ + ) ; 2 2 h ! ! i = cos ,Pnˆ sin ; 2 2 h ! !i = cos , P nˆ sin ; 2 2 = qh(!). i

q and q describe the same rotation.

31 Quaternion multiplication and P pq [p q p q,q p + p q + P p q] ⌘ 0 0 · 0 0 ⇥ Quaternion multiplication and P pq [p q p q,q p + p q + P p q] ⌘ 0 0 · 0 0 ⇥ P=+1 produces the traditional definition P=-1 is an alternative definition, already discussed by Hamilton in 1844. Quaternion multiplication and P

pq [p q p q,q p + p q + P p q] ⌘ 0 0 · 0 0 ⇥ P=+1 produces the traditional definition P=-1 is an alternative definition, already discussed by Hamilton in 1844. quaternion rotation operator L (r) vec (q[0, r]q⇤) q ⌘ Quaternion multiplication and P

pq [p q p q,q p + p q + P p q] ⌘ 0 0 · 0 0 ⇥ P=+1 produces the traditional definition P=-1 is an alternative definition, already discussed by Hamilton in 1844. quaternion rotation operator L (r) vec (q[0, r]q⇤) q ⌘ L (r) p2 p 2 r + 2(p r)p +2Pp (p r) p ⌘ 0 || || · 0 ⇥ Quaternion multiplication and P

pq [p q p q,q p + p q + P p q] ⌘ 0 0 · 0 0 ⇥ P=+1 produces the traditional definition P=-1 is an alternative definition, already discussed by Hamilton in 1844. quaternion rotation operator L (r) vec (q[0, r]q⇤) q ⌘ L (r) p2 p 2 r + 2(p r)p +2Pp (p r) p ⌘ 0 || || · 0 ⇥ For a quaternion p describing a passive rotation (i.e. all the rotation conventions), this operator produces the passive rotation components of r. Unit Quaternions and Rotations

P = 1

Consider the vector v =[1, 1, 1], and put ✓ = ⇡/2, with nqˆ =[0, 0, 1]

33 Unit Quaternions and Rotations

P = 1

Consider the vector v =[1, 1, 1], and put ✓ = ⇡/2, with nqˆ =[0, 0, 1] ⇡ ⇡ ⇡ ⇡ qvq⇤ = [cos , 0, 0, sin ][0, 1, 1, 1] [cos , 0, 0, sin ] 4 4 4 4 1 1 1 1 =[ , 0, 0, ][ , 0, p2, ] p2 p2 p2 p2 =[0, 1, 1, 1]

33 Unit Quaternions and Rotations

P = 1

Consider the vector v =[1, 1, 1], and put ✓ = ⇡/2, with nqˆ =[0, 0, 1] ⇡ ⇡ ⇡ ⇡ qvq⇤ = [cos , 0, 0, sin ][0, 1, 1, 1] [cos , 0, 0, sin ] 4 4 4 4 1 1 1 1 =[ , 0, 0, ][ , 0, p2, ] p2 p2 p2 p2 =[0, 1, 1, 1] Therefore the rotated vector v0 has components [ 1, 1, 1].

33 Unit Quaternions and Rotations

P = 1

Consider the vector v =[1, 1, 1], and put ✓ = ⇡/2, with nqˆ =[0, 0, 1] ⇡ ⇡ ⇡ ⇡ qvq⇤ = [cos , 0, 0, sin ][0, 1, 1, 1] [cos , 0, 0, sin ] 4 4 4 4 1 1 1 1 =[ , 0, 0, ][ , 0, p2, ] p2 p2 p2 p2 =[0, 1, 1, 1] Therefore the rotated vector v0 has components [ 1, 1, 1]. The nice thing is that this works for any rotation axis!

33 Rotation Representations

34 Rotation Representations Representation 1: Axis-angle pair: ( P nˆ, !)

Representation 2: Rodrigues vector: ⇢ = P nˆ tan ! 2 Representation 3: Unit quaternion: cos ! , P nˆ sin ! 2 2 ⇥ ⇤ Representation 4: Rotation matrix: Rij

Representation 5: Homochoric vector h

Representation 6: Cubochoric vector c

Representation 7: Euler Angles ✓

34 Rotation Representations Representation 1: Axis-angle pair: ( P nˆ, !)

Representation 2: Rodrigues vector: ⇢ = P nˆ tan ! 2 Representation 3: Unit quaternion: cos ! , P nˆ sin ! 2 2 ⇥ ⇤ Representation 4: Rotation matrix: Rij

Representation 5: Homochoric vector h

Representation 6: Cubochoric vector c

Representation 7: Euler Angles ✓

Others, not used frequently in MSE: Cayley-Klein parameters, geometric algebra rotors, homographies, , …

34 Rotation Transformations

35 Rotation Transformations from to e o a r q h c # \ ! e – X X X X a ah o X – X e X a ah a o X – X X X h r o a X – a X h q X X X X – X h h ao a X a a – X c hao ha h ha ha X –

Table 1: Table of direct (X) and indirect transformation routines between ro- tation representations, which are identified by single letters: Euler angles (e); rotation/orientation matrix (o); axis-angle pair (a); Rodrigues-Frank vector (r); unit quaternion (q); homochoric vector (h); and cubochoric vector (c).

35 Rotation Transformations from to e o a r q h c # \ ! e – X X X X a ah o X – X e X a ah a o X – X X X h r o a X – a X h q X X X X – X h h ao a X a a – X c hao ha h ha ha X –

Table 1: Table of direct (X) and indirect transformation routines between ro- tation representations, which are identified by single letters: Euler angles (e); rotation/orientation matrix (o); axis-angle pair (a); Rodrigues-Frank vector (r); unit quaternion (q); homochoric vector (h); and cubochoric vector (c).

21 direct conversion routines

35 Rotation Transformations: Example Function: eu2ax The axis-angle pair (nˆ, !) can be obtained from the Bunge Euler angles by using the following relation:

P P P (nˆ, !)= t cos , t sin , sin , ↵ (1) ⌧ ⌧ ⌧ ✓ ◆ where

t = tan ; = 1 (' + ' ); = 1 (' ' ); 2 2 1 2 2 1 2 ⌧ = t2 +sin2 ; ↵ = 2 arctan ⌧. (2)

If ↵ > ⇡, then the axis anglep pair is given by:

P P P (nˆ, !)= t cos , t sin , sin , 2⇡ ↵ . (3) ⌧ ⌧ ⌧ ✓ ◆

36 Unit quaternion sphere

37 Unit quaternion sphere The set of all 3x3 rotation matrices (which are orthogonal matrices) is commonly known as SO(3) [Special Orthogonal 3x3 matrices, where “Special” means that the determinant of the matrix is +1].

37 Unit quaternion sphere The set of all 3x3 rotation matrices (which are orthogonal matrices) is commonly known as SO(3) [Special Orthogonal 3x3 matrices, where “Special” means that the determinant of the matrix is +1].

x2 + y2 + z2 = 1 represents a sphere in 3D space

37 Unit quaternion sphere The set of all 3x3 rotation matrices (which are orthogonal matrices) is commonly known as SO(3) [Special Orthogonal 3x3 matrices, where “Special” means that the determinant of the matrix is +1].

x2 + y2 + z2 = 1 represents a sphere in 3D space q2 + q2 + q2 + q2 = 1 represents a sphere in 4D space ! 0 1 2 3

37 Unit quaternion sphere The set of all 3x3 rotation matrices (which are orthogonal matrices) is commonly known as SO(3) [Special Orthogonal 3x3 matrices, where “Special” means that the determinant of the matrix is +1].

x2 + y2 + z2 = 1 represents a sphere in 3D space q2 + q2 + q2 + q2 = 1 represents a sphere in 4D space ! 0 1 2 3 This sphere, S3, represents all 3D rotations (unit quaternions)

37 Unit quaternion sphere The set of all 3x3 rotation matrices (which are orthogonal matrices) is commonly known as SO(3) [Special Orthogonal 3x3 matrices, where “Special” means that the determinant of the matrix is +1].

x2 + y2 + z2 = 1 represents a sphere in 3D space q2 + q2 + q2 + q2 = 1 represents a sphere in 4D space ! 0 1 2 3 This sphere, S3, represents all 3D rotations (unit quaternions)

But, there is a complicating factor: q and q represent the same rotation!

37 Unit quaternion sphere The set of all 3x3 rotation matrices (which are orthogonal matrices) is commonly known as SO(3) [Special Orthogonal 3x3 matrices, where “Special” means that the determinant of the matrix is +1].

x2 + y2 + z2 = 1 represents a sphere in 3D space q2 + q2 + q2 + q2 = 1 represents a sphere in 4D space ! 0 1 2 3 This sphere, S3, represents all 3D rotations (unit quaternions)

But, there is a complicating factor: q and q represent the same rotation!

Hence, S3 represents a “double covering” of all rotations.

37 Unit quaternion sphere The set of all 3x3 rotation matrices (which are orthogonal matrices) is commonly known as SO(3) [Special Orthogonal 3x3 matrices, where “Special” means that the determinant of the matrix is +1].

x2 + y2 + z2 = 1 represents a sphere in 3D space q2 + q2 + q2 + q2 = 1 represents a sphere in 4D space ! 0 1 2 3 This sphere, S3, represents all 3D rotations (unit quaternions)

But, there is a complicating factor: q and q represent the same rotation!

Hence, S3 represents a “double covering” of all rotations.

It is sucient to consider only unit quaternions in one hemisphere, say q 0. 0

37 Unit quaternion sphere The set of all 3x3 rotation matrices (which are orthogonal matrices) is commonly known as SO(3) [Special Orthogonal 3x3 matrices, where “Special” means that the determinant of the matrix is +1].

x2 + y2 + z2 = 1 represents a sphere in 3D space q2 + q2 + q2 + q2 = 1 represents a sphere in 4D space ! 0 1 2 3 This sphere, S3, represents all 3D rotations (unit quaternions)

But, there is a complicating factor: q and q represent the same rotation!

Hence, S3 represents a “double covering” of all rotations.

It is sucient to consider only unit quaternions in one hemisphere, say q 0. We will call this the Northern quaternion hemisphere. 0

37 Stereographic Projection (equal angle)

38 Stereographic Projection (equal angle)

2D

38 Stereographic Projection (equal angle)

2D

38 Stereographic Projection (equal angle)

2D

38 Stereographic Projection (equal angle)

2D

S

38 Stereographic Projection (equal angle)

2D

S Projection: 1D line segment, “equator” points at the ends.

38 Stereographic Projection (equal angle)

2D 3D

S Projection: 1D line segment, “equator” points at the ends.

38 Stereographic Projection (equal angle)

2D 3D

S S Projection: 1D line segment, “equator” points at the ends.

38 Stereographic Projection (equal angle)

2D 3D

S S Projection: Projection: 1D line segment, 2D disk, bounded “equator” points by an equatorial at the ends. circle

38 Stereographic Projection (equal angle)

2D 3D 4D

S S Projection: Projection: 1D line segment, 2D disk, bounded “equator” points by an equatorial at the ends. circle

38 Stereographic Projection (equal angle)

2D 3D 4D

?

S S Projection: Projection: 1D line segment, 2D disk, bounded “equator” points by an equatorial at the ends. circle

38 Stereographic Projection (equal angle)

2D 3D 4D

?

S S Projection: Projection: Projection: 1D line segment, 2D disk, bounded 3D ball, bounded “equator” points by an equatorial by an equatorial at the ends. circle sphere

38 Stereographic Projection (equal angle)

2D 3D 4D

S S Projection: Projection: Projection: 1D line segment, 2D disk, bounded 3D ball, bounded “equator” points by an equatorial by an equatorial at the ends. circle sphere

38 Stereographic Projection (2D)

2D

S Projection: 1D line segment, “equator” points at the ends.

39 Stereographic Projection (2D)

2D

Circle radius r = 1, point (x, y)withx2 + y2 =1

S Projection: 1D line segment, “equator” points at the ends.

39 Stereographic Projection (2D)

2D

Circle radius r = 1, point (x, y)withx2 + y2 =1

x x = p 1+y

S Projection: 1D line segment, “equator” points at the ends.

39 Stereographic Projection (2D)

2D

Circle radius r = 1, point (x, y)withx2 + y2 =1

x x = p 1+y

S We will only project points from the Projection: Northern hemi-circle (y>0); 1D line segment, Projection point : (0,-1) “equator” points at the ends.

39 Stereographic Projection (3D)

3D

S Projection: 2D disk, bounded by an equatorial circle

40 Stereographic Projection (3D)

3D Sphere radius r = 1, point (x, y, z)withx2 + y2 + z2 =1

S Projection: 2D disk, bounded by an equatorial circle

40 Stereographic Projection (3D)

3D Sphere radius r = 1, point (x, y, z)withx2 + y2 + z2 =1

x y (x ,y )= , ! p p 1+z 1+z ✓ ◆

S Projection: 2D disk, bounded by an equatorial circle

40 Stereographic Projection (3D)

3D Sphere radius r = 1, point (x, y, z)withx2 + y2 + z2 =1

x y (x ,y )= , ! p p 1+z 1+z ✓ ◆ We will only project points from the S Northern hemi-sphere (z>0); Projection: Projection point: (0,0,-1) 2D disk, bounded by an equatorial circle

40 Stereographic Projection (4D)

4D

?

Projection point: ( 1, 0, 0, 0) “South Pole”; Northern hemi-hypersphere: q 0; 0 Projection: Equatorial sphere: q0 =0 ! = 180. ! 3D ball, bounded by an equatorial ! sphere q0 = cos ,soq0 0 means 0 ! ⇡ 2  

41 Stereographic Projection (4D)

4D

Projection point: ( 1, 0, 0, 0) “South Pole”; Northern hemi-hypersphere: q 0; 0 Projection: Equatorial sphere: q0 =0 ! = 180. ! 3D ball, bounded by an equatorial ! sphere q0 = cos ,soq0 0 means 0 ! ⇡ 2  

41 Stereographic Projection (4D)

4D Hypersphere radius r = 1, 2 2 2 2 point (q0,q1,q2,q3)withq0 + q1 + q2 + q3 =1

Projection point: ( 1, 0, 0, 0) “South Pole”; Northern hemi-hypersphere: q 0; 0 Projection: Equatorial sphere: q0 =0 ! = 180. ! 3D ball, bounded by an equatorial ! sphere q0 = cos ,soq0 0 means 0 ! ⇡ 2  

41 Stereographic Projection (4D)

4D Hypersphere radius r = 1, 2 2 2 2 point (q0,q1,q2,q3)withq0 + q1 + q2 + q3 =1

q q q (x ,y ,z )= 1 , 2 , 3 p p p 1+q 1+q 1+q ✓ 0 0 0 ◆

Projection point: ( 1, 0, 0, 0) “South Pole”; Northern hemi-hypersphere: q 0; 0 Projection: Equatorial sphere: q0 =0 ! = 180. ! 3D ball, bounded by an equatorial ! sphere q0 = cos ,soq0 0 means 0 ! ⇡ 2  

41 Stereographic Projection (4D)

42 Stereographic Projection (4D)

42 Stereographic Projection (4D)

42 Stereographic Projection (4D)

k

-i

-j 1 j i

-k

42 Stereographic Projection (4D) q q q (x ,y ,z )= 1 , 2 , 3 p p p 1+q 1+q 1+q ✓ 0 0 0 ◆ k

-i

-j 1 j i

-k

42 Stereographic Projection (4D) q q q (x ,y ,z )= 1 , 2 , 3 p p p 1+q 1+q 1+q ✓ 0 0 0 ◆ k I =(1, 0, 0, 0) (x ,y ,z )=(0, 0, 0) ! p p p

-i

-j 1 j i

-k

42 Stereographic Projection (4D) q q q (x ,y ,z )= 1 , 2 , 3 p p p 1+q 1+q 1+q ✓ 0 0 0 ◆ k I =(1, 0, 0, 0) (x ,y ,z )=(0, 0, 0) ! p p p j =(0, 0, 1, 0) (x ,y ,z )=(0, 1, 0) ! p p p -i

-j 1 j i

-k

42 Stereographic Projection (4D) q q q (x ,y ,z )= 1 , 2 , 3 p p p 1+q 1+q 1+q ✓ 0 0 0 ◆ k I =(1, 0, 0, 0) (x ,y ,z )=(0, 0, 0) ! p p p j =(0, 0, 1, 0) (x ,y ,z )=(0, 1, 0) ! p p p -i The identity rotation is represented -j 1 j at the origin of the SP sphere; i 180° rotations around the cartesian axes are represented by the “pure” imaginary units i, j, and k. -k

42 Stereographic Projection (4D) q q q (x ,y ,z )= 1 , 2 , 3 p p p 1+q 1+q 1+q ✓ 0 0 0 ◆ k I =(1, 0, 0, 0) (x ,y ,z )=(0, 0, 0) ! p p p j =(0, 0, 1, 0) (x ,y ,z )=(0, 1, 0) ! p p p -i The identity rotation is represented -j 1 j at the origin of the SP sphere; i 180° rotations around the cartesian axes are represented by the “pure” imaginary units i, j, and k.

-k The notation i, j, k for the cartesian basis vectors stems directly from the fact that “ai+bj+ck” is the vector part of a quaternion !

42 Lambert Projection 3D (equal area)

43 Lambert Projection 3D (equal area)

This point is at infinity …

43 Lambert Projection 3D (equal area)

This point is at infinity …

Unit radius 3D sphere 2D disk !

43 Lambert Projection 3D (equal area)

This point is at infinity …

Unit radius 3D sphere 2D disk !

2 2 (x, y, z) (X, Y )= x ,y ! 1 z 1 z r r ! X2 + Y 2 X2 + Y 2 X2 + Y 2 (X, Y ) (x, y, z)= X 1 ,Y 1 , 1 ! r 4 r 4 2 !

43 Lambert Projection 3D (equal area)

This point is at infinity …

Unit radius 3D sphere 2D disk !

2 2 (x, y, z) (X, Y )= x ,y ! 1 z 1 z r r ! X2 + Y 2 X2 + Y 2 X2 + Y 2 (X, Y ) (x, y, z)= X 1 ,Y 1 , 1 ! r 4 r 4 2 ! Usually, only one hemisphere is projected this way, to avoid an infinite plot and large distortions.

43 Lambert Projection 3D (equal area)

This point is at infinity …

Unit radius 3D sphere 2D disk !

2 2 (x, y, z) (X, Y )= x ,y ! 1 z 1 z r r ! X2 + Y 2 X2 + Y 2 X2 + Y 2 (X, Y ) (x, y, z)= X 1 ,Y 1 , 1 ! r 4 r 4 2 ! Usually, only one hemisphere is projected this way, to avoid an infinite plot and large distortions. A patch on the sphere will be distorted upon projection, but the projected patch will have the same surface area as the original patch.

43 Lambert Projection 4D (equal “area”)

P = 1

44 Lambert Projection 4D (equal “area”)

Unit radius 4D sphere 3D ball ! P = 1

44 Lambert Projection 4D (equal “area”)

Unit radius 4D sphere 3D ball ! P = 1 Quaternion Northern hemisphere 3D ball !

44 Lambert Projection 4D (equal “area”)

Unit radius 4D sphere 3D ball ! P = 1 Quaternion Northern hemisphere 3D ball !

q =(q0,q1,q2,q3); q0 0 ! ! = cos , sin nˆ 0 ! ⇡ 2 2   ⇣ ⌘

44 Lambert Projection 4D (equal “area”)

Unit radius 4D sphere 3D ball ! P = 1 Quaternion Northern hemisphere 3D ball !

q =(q0,q1,q2,q3); q0 0 ! ! = cos , sin nˆ 0 ! ⇡ 2 2   ⇣ ⌘

44 Lambert Projection 4D (equal “area”)

Unit radius 4D sphere 3D ball ! P = 1 Quaternion Northern hemisphere 3D ball !

q =(q0,q1,q2,q3); q0 0 ! ! = cos , sin nˆ 0 ! ⇡ 2 2   ⇣ ⌘

1 Lambert projection: h =(x, y, z)=nˆ 3 (! sin !) 3 ! 4

44 Lambert Projection 4D (equal “area”)

Unit radius 4D sphere 3D ball ! P = 1 Quaternion Northern hemisphere 3D ball !

q =(q0,q1,q2,q3); q0 0 ! ! = cos , sin nˆ 0 ! ⇡ 2 2   ⇣ ⌘

1 Lambert projection: h =(x, y, z)=nˆ 3 (! sin !) 3 ! 4

Representation 5: Homochoric vector h

44 Lambert Projection 4D (equal “area”)

Unit radius 4D sphere 3D ball ! P = 1 Quaternion Northern hemisphere 3D ball !

q =(q0,q1,q2,q3); q0 0 ! ! = cos , sin nˆ 0 ! ⇡ 2 2   ⇣ ⌘

1 Lambert projection: h =(x, y, z)=nˆ 3 (! sin !) 3 ! 4 Inverse projection: there is no analytical inverse . . .

Representation 5: Homochoric vector h

44 Inversion of homochoric coordinates

Define a 16-component constant vector with components listed in the table 2 below; set h = h ;ifh = 0, then (nˆ, !)=([0, 0, 1], 0). Otherwise, set h0 = h/ph and compute| | the sum:

16 i 1 s = i h ; i=1 X

The axis angle pair is then given by (nˆ, !)=(h0, 2 arccos(s)).

i 4i+1 4i+2 4i+3 4i+4 01.000000000001885-0.500000000219485-0.024999992127593-0.003928701544781 1-0.000815270153545-0.000200950042612-0.000023979867761-0.000082028689266 20.000124487150421-0.0001749114214820.000170348193414-0.000120620650041 30.000059719705869-0.0000198075672400.000003953714684-0.000000365550014

Table 1: Coecients i needed for the conversion from homochoric coordinates to axis angle pair.

45 Consider the Bunge Euler angle triplet ✓ =(⇡/2, 0, 0), i.e., a counterclockwise rotation by 90 around the e3 axis.

46 Consider the Bunge Euler angle triplet ✓ =(⇡/2, 0, 0), i.e., a counterclockwise rotation by 90 around the e3 axis.

We set P = +1 to obtain:

Passive rotation matrix: • 010 ↵✓ = 100 ; 0 0011 @ A Quaternion: • 1 1 q✓ = , 0, 0, ; p2 p2 ✓ ◆ Axis-angle pair: • (nˆ, !)✓ = ([001]¯ , 90);

Rodrigues-Frank vector: • ⇢ =(0, 0, 1) ; ✓ Homochoric vector: • h =(0, 0, 0.7536693) . ✓ 46 Consider the Bunge Euler angle triplet ✓ =(⇡/2, 0, 0), i.e., a counterclockwise rotation by 90 around the e3 axis.

We set P = +1 to obtain: Passive rotation matrix: P = 1 • 010 010 ↵ = 100 ; 100 ✓ 0 1 001 0 0011 @ A @ A Quaternion: • 1 1 1 1 q✓ = , 0, 0, ; , 0, 0, p2 p2 p2 p2 ✓ ◆ ✓ ◆ Axis-angle pair: • (nˆ, !)✓ = ([001]¯ , 90); ([001], 90)

Rodrigues-Frank vector: • ⇢ =(0, 0, 1) ; (0, 0, 1) ✓ Homochoric vector: • h =(0, 0, 0.7536693) . (0, 0, 0.7536693) ✓ 46 Cubochoric representation

47 Cubochoric representation Since the unit quaternion sphere is already mapped onto a 3D ball by the homochoric representation, all that is left to do is mapping the homochoric representation onto a cubic grid, using an equal-volume mapping (Lambert-style).

47 Cubochoric representation Since the unit quaternion sphere is already mapped onto a 3D ball by the homochoric representation, all that is left to do is mapping the homochoric representation onto a cubic grid, using an equal-volume mapping (Lambert-style).

z z

y y x x

(a) (b)

47 48 48 48 48 1 2 5 6 3 ⇡ To get the correct cube volume, put a0 = ⇡ ; a = 6 ; = ⇡/6 48 ⇣ ⌘ p Cubochoric representation

D. Rosca, A. Morawiec, and M. De Graef. “A new method of constructing a grid in the space of 3D rotations and its applications to texture analysis”. Modeling and Simulations in Materials Science and Engineering 22, 075013 (2014).

49 Cubochoric representation

Representation 6: Cubochoric vector c

D. Rosca, A. Morawiec, and M. De Graef. “A new method of constructing a grid in the space of 3D rotations and its applications to texture analysis”. Modeling and Simulations in Materials Science and Engineering 22, 075013 (2014).

49 Cubochoric representation

Representation 6: Cubochoric vector c

The cubochoric vector representation has no easy relationship with the others due to the non-linear multi-step process to compute the components of the vector c.

D. Rosca, A. Morawiec, and M. De Graef. “A new method of constructing a grid in the space of 3D rotations and its applications to texture analysis”. Modeling and Simulations in Materials Science and Engineering 22, 075013 (2014).

49 Cubochoric representation

Representation 6: Cubochoric vector c

The cubochoric vector representation has no easy relationship with the others due to the non-linear multi-step process to compute the components of the vector c.

But, this diculty is more than o↵set by the advantages gained in terms of uniform sampling. We will come back to this after we talk about combinations of rotations.

D. Rosca, A. Morawiec, and M. De Graef. “A new method of constructing a grid in the space of 3D rotations and its applications to texture analysis”. Modeling and Simulations in Materials Science and Engineering 22, 075013 (2014).

49 Rotations & Crystal Symmetry

50 Rotations & Crystal Symmetry

To understand when two rotations are equivalent, we need to have a prescription for combining two rotations into one.

50 Rotations & Crystal Symmetry

To understand when two rotations are equivalent, we need to have a prescription for combining two rotations into one.

For active rotations, we simply multiply the rotation matrices, writing them from right to left… Consider active rotation R followed by O:

50 Rotations & Crystal Symmetry

To understand when two rotations are equivalent, we need to have a prescription for combining two rotations into one.

For active rotations, we simply multiply the rotation matrices, writing them from right to left… Consider active rotation R followed by O:

Sa = OaRa

50 Rotations & Crystal Symmetry

To understand when two rotations are equivalent, we need to have a prescription for combining two rotations into one.

For active rotations, we simply multiply the rotation matrices, writing them from right to left… Consider active rotation R followed by O:

Sa = OaRa

Sp =(Sa)T =(OaRa)T =(Ra)T (Oa)T = RpOp

50 Rotations & Crystal Symmetry

To understand when two rotations are equivalent, we need to have a prescription for combining two rotations into one.

For active rotations, we simply multiply the rotation matrices, writing them from right to left… Consider active rotation R followed by O:

Sa = OaRa

Sp =(Sa)T =(OaRa)T =(Ra)T (Oa)T = RpOp

FOR PASSIVE ROTATIONS, WE WRITE THE MATRICES LEFT TO RIGHT !

50 Rotations & Crystal Symmetry

For a given crystal symmetry, there are multiple equivalent rotations/ orientations to any given rotation/orientation.

Only rotational symmetry elements are important, since rotations never change the handedness of an object. 4 2 This means that for point 3¯ we only need to consider the point group 432 . m m

The pure rotation point groups are: 1, 2, 222, 4, 422, 3, 32, 6, 622, 23, and 432

51 Rotations & Crystal Symmetry

1 1, 1¯ 2 2, m,2/m 222 222, mm2, mmm 4 4, 4,¯ 4/m 422 422, 4mm, 42¯ m,4/mmm 3 3, 3¯ 32 32, 3m, 3¯m 6 6, 6,¯ 6/m 622 622, 6mm, 6¯m2, 6/mmm 23 23, m3 432 432, 43¯ m, m3¯m.

52 Rotations & Crystal Symmetry

1 1, 1¯ No symmetry 2 2, m,2/m 222 222, mm2, mmm 4 4, 4,¯ 4/m 422 422, 4mm, 42¯ m,4/mmm 3 3, 3¯ 32 32, 3m, 3¯m 6 6, 6,¯ 6/m 622 622, 6mm, 6¯m2, 6/mmm 23 23, m3 432 432, 43¯ m, m3¯m.

52 Rotations & Crystal Symmetry

1 1, 1¯ No symmetry

2 2, m,2/m Cyclic 222 222, mm2, mmm 4 4, 4,¯ 4/m Cyclic 422 422, 4mm, 42¯ m,4/mmm 3 3, 3¯ Cyclic 32 32, 3m, 3¯m

6 6, 6,¯ 6/m Cyclic 622 622, 6mm, 6¯m2, 6/mmm 23 23, m3 432 432, 43¯ m, m3¯m.

52 Rotations & Crystal Symmetry

1 1, 1¯ No symmetry

2 2, m,2/m Cyclic

222 222, mm2, mmm Dihedral 4 4, 4,¯ 4/m Cyclic

422 422, 4mm, 42¯ m,4/mmm Dihedral 3 3, 3¯ Cyclic 32 32, 3m, 3¯m Dihedral

6 6, 6,¯ 6/m Cyclic 622 622, 6mm, 6¯m2, 6/mmm Dihedral 23 23, m3 432 432, 43¯ m, m3¯m.

52 Rotations & Crystal Symmetry

1 1, 1¯ No symmetry

2 2, m,2/m Cyclic

222 222, mm2, mmm Dihedral 4 4, 4,¯ 4/m Cyclic

422 422, 4mm, 42¯ m,4/mmm Dihedral 3 3, 3¯ Cyclic 32 32, 3m, 3¯m Dihedral

6 6, 6,¯ 6/m Cyclic 622 622, 6mm, 6¯m2, 6/mmm Dihedral

23 23, m3 Tetrahedral 432 432, 43¯ m, m3¯m.

52 Rotations & Crystal Symmetry

1 1, 1¯ No symmetry

2 2, m,2/m Cyclic

222 222, mm2, mmm Dihedral 4 4, 4,¯ 4/m Cyclic

422 422, 4mm, 42¯ m,4/mmm Dihedral 3 3, 3¯ Cyclic 32 32, 3m, 3¯m Dihedral

6 6, 6,¯ 6/m Cyclic 622 622, 6mm, 6¯m2, 6/mmm Dihedral

23 23, m3 Tetrahedral

432 432, 43¯ m, m3¯m. Octahedral

52 Rotations & Crystal Symmetry P = 1 Simple example: point group 4

53 Rotations & Crystal Symmetry P = 1 Simple example: point group 4 q1 =(1, 0, 0, 0) ; 1 1 q2 = , 0, 0, ; p2 p2 ✓ ◆ q3 =(0, 0, 0, 1) ; 1 1 q4 = , 0, 0, . p2 p2 ✓ ◆

53 Rotations & Crystal Symmetry P = 1 Simple example: point group 4 q1 =(1, 0, 0, 0) ; 1 1 q2 = , 0, 0, ; p2 p2 ✓ ◆ q3 =(0, 0, 0, 1) ; 1 1 q4 = , 0, 0, . p2 p2 ✓ ◆

1 1 1 1 120@[111] : p = , , , 2 2 2 2 ✓ ◆ 53 Rotations & Crystal Symmetry P = 1 Simple example: point group 4 1 1 1 1 q p = , , , ; q1 =(1, 0, 0, 0) ; 1 2 2 2 2 ✓ ◆ 1 1 1 1 q2 = , 0, 0, ; q2p = 0, 0, , ; p2 p2 p2 p2 ✓ ◆ ✓ ◆ 1 1 1 1 q3 =(0, 0, 0, 1) ; q p = , , , ; 3 2 2 2 2 1 1 ✓ ◆ q4 = , 0, 0, . 1 1 p2 p2 q4p = , , 0, 0 . ✓ ◆ p2 p2 ✓ ◆

1 1 1 1 120@[111] : p = , , , 2 2 2 2 ✓ ◆ 53 Rotations & Crystal Symmetry P = 1 Simple example: point group 4 1 1 1 1 q p = , , , ; q1 =(1, 0, 0, 0) ; 1 2 2 2 2 120@[111] ✓ ◆ 1 1 1 1 q2 = , 0, 0, ; q2p = 0, 0, , ; 180@[011] p2 p2 p2 p2 ✓ ◆ ✓ ◆ q3 =(0, 0, 0, 1) ; 1 1 1 1 q3p = , , , ; 120 @[11¯1]¯ 2 2 2 2 1 1 ✓ ◆ q4 = , 0, 0, . 1 1 p2 p2 q4p = , , 0, 0 . 90@[100] ✓ ◆ p2 p2 ✓ ◆

1 1 1 1 120@[111] : p = , , , 2 2 2 2 ✓ ◆ 53 Fundamental Zones FZ = a subset of the rotation group SO(3) that describes all rotations that are unique for a given crystal symmetry.

Preference is given to a closed and bounded (i.e., compact) subset, which is also known as the asymmetric domain.

FZs can be defined for each of the seven rotation representations that we introduced earlier.

The FZ for one rotation representation does not necessarily map one-to-one onto the FZ of another rotation representation!!!

FZs are easiest to handle in the Rodrigues representation, where they are always bounded by planar surfaces.

The FZ shape depends on the rotation symmetry group.

54 Cyclic groups: planes perpendicular to the [001] axis, at distance of tan[⇡/(2n)] from the origin. Dihedral groups: 2n-sided prism with top and bottom facets perpendicular to the [001] axis, at distance of tan[⇡/(2n)] from the origin, and 2n square prism faces at distance 1.

55 Cyclic groups: planes perpendicular to the [001] axis, at distance of tan[⇡/(2n)] from the origin. Dihedral groups: 2n-sided prism with top and bottom facets perpendicular to the [001] axis, at distance of tan[⇡/(2n)] from the origin, and 2n square prism faces at distance 1. 422

55 Tetrahedral group: regular octahedron with faces normal to the three-fold axes at distance tan[⇡/6].

56 Tetrahedral group: regular octahedron with faces normal to the three-fold axes at distance tan[⇡/6].

23

56 Octahedral group: truncated cube with six octagonal faces at tan[⇡/4], and eight triangular faces at distance tan[⇡/6]. 432

57 Octahedral FZ in Euler Space

58 Octahedral FZ in Euler Space

58 Octahedral FZ in Euler Space

π

54.7356° Φ

ϕ1 ϕ2 π/4 0

58 Octahedral Euler FZ converted to Rodrigues Space

59 Octahedral Euler FZ converted to Rodrigues Space

59 Octahedral Rodrigues FZ converted to Euler Space

60 Octahedral Rodrigues FZ converted to Euler Space

60 Rotation Transformations

FORTRAN-90, C/C++ (DREAM.3D), MATLAB, IDL

If you want to convert the library to another language (e.g., Matlab or IDL) then you can verify that the conversion is correct by means of a test program that runs all possible combinations of two and three rotation conversions against a list of input rotations. All results must match the reference results for both P = 1 in order to pass the “correct implementation” test. ± 2 P values, 75 rotations, 42 binary tests, 203 ternary tests. Total 36, 750 tests.

61 62 QUESTIONS ?

62