Rotations, rotations, and more...

Preview:

Citation preview

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

AFOSR MURI FA9550-12-1-0458 CMU, 7/8/151

AN OVERVIEW OF ROTATION REPRESENTATIONS AND THE RELATIONS BETWEEN THEM

Outline2D rotations

3D rotations

7 rotation representations

Conventions (places where you can go wrong…)

Motivation

2

Outline2D rotations

3D rotations

7 rotation representations

Conventions (places where you can go wrong…)

Motivation

2

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).

2D Rotations

3

2D Rotations

x

y

3

2D Rotations

x

y

x

0

y0✓

3

2D Rotations

x

y

x

0

y0✓

✓e0x

e0y

◆=

✓cos ✓ sin ✓� sin ✓ cos ✓

◆✓ex

ey

◆! e0

i

= Rp

ij

ej

3

2D Rotations

x

y

x

0

y0✓

✓e0x

e0y

◆=

✓cos ✓ sin ✓� sin ✓ cos ✓

◆✓ex

ey

◆! e0

i

= Rp

ij

ej

Rpij = e0i · ej

3

2D Rotations

x

y

Rotating the reference frame while keeping the object constant is known as a passive rotation.

x

0

y0✓

✓e0x

e0y

◆=

✓cos ✓ sin ✓� sin ✓ cos ✓

◆✓ex

ey

◆! e0

i

= Rp

ij

ej

Rpij = e0i · ej

3

2D Rotations

x

y

Rotating the reference frame while keeping the object constant is known as a passive rotation.

x

0

y0✓

✓e0x

e0y

◆=

✓cos ✓ sin ✓� sin ✓ cos ✓

◆✓ex

ey

◆! e0

i

= Rp

ij

ej

Rpij = e0i · ej

Assumptions: Cartesian reference frame, right-handed; positive rotation is counter-clockwise

3

2D Rotations

4

2D Rotations

x

y

x

0

y0✓

4

2D Rotations

x

y

x

0

y0✓

4

2D Rotations

x

y

x

0

y0✓ r = r0ie

0i = rjej

4

2D Rotations

x

y

x

0

y0✓ r = r0ie

0i = rjej

= r0iRpijej

= (Rp)Tjir0iej

4

2D Rotations

x

y

x

0

y0✓ r = r0ie

0i = rjej

= r0iRpijej

= (Rp)Tjir0iej

! rj = (Rp)Tjir0i

4

2D Rotations

x

y

x

0

y0✓ r = r0ie

0i = rjej

= r0iRpijej

= (Rp)Tjir0iej

! rj = (Rp)Tjir0i

! r0i = Rpijrj

4

2D Rotations

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

x

y

x

0

y0✓ r = r0ie

0i = rjej

= r0iRpijej

= (Rp)Tjir0iej

! rj = (Rp)Tjir0i

! r0i = Rpijrj

4

2D Rotations

5

x

y2D Rotations

⇢cos↵

⇢ sin↵

↵⇢ (a, b)

5

x

y2D Rotations

⇢cos↵

⇢ sin↵

↵⇢ (a, b)

(a0, b0)✓

⇢cos(↵+

✓)

⇢ sin(↵+ ✓)

5

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

x

y2D Rotations

⇢cos↵

⇢ sin↵

↵⇢ (a, b)

(a0, b0)✓

⇢cos(↵+

✓)

⇢ sin(↵+ ✓)

5

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

x

y2D Rotations

⇢cos↵

⇢ sin↵

↵⇢ (a, b)

(a0, b0)✓

⇢cos(↵+

✓)

⇢ sin(↵+ ✓)

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

5

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

x

y2D Rotations

⇢cos↵

⇢ sin↵

↵⇢ (a, b)

Rotating the object while keeping the reference frame constant is known as an active rotation.

(a0, b0)✓

⇢cos(↵+

✓)

⇢ sin(↵+ ✓)

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

5

2D Rotations

6

2D Rotations(a0, b0) = ⇢(cos(↵+ ✓), sin(↵+ ✓))

= ⇢(cos↵ cos ✓ � sin↵ sin ✓, cos↵ sin ✓ + sin↵ cos ✓)

= (a cos ✓ � b sin ✓, a sin ✓ + b cos ✓)

!✓

a0

b0

◆=

✓cos ✓ � sin ✓sin ✓ cos ✓

◆✓ab

6

2D Rotations(a0, b0) = ⇢(cos(↵+ ✓), sin(↵+ ✓))

= ⇢(cos↵ cos ✓ � sin↵ sin ✓, cos↵ sin ✓ + sin↵ cos ✓)

= (a cos ✓ � b sin ✓, a sin ✓ + b cos ✓)

!✓

a0

b0

◆=

✓cos ✓ � sin ✓sin ✓ cos ✓

◆✓ab

r0 = Ra(✓)r = Rp(�✓)r

6

2D Rotations

Ra= (Rp

)

T=

✓cos ✓ � sin ✓sin ✓ cos ✓

(a0, b0) = ⇢(cos(↵+ ✓), sin(↵+ ✓))

= ⇢(cos↵ cos ✓ � sin↵ sin ✓, cos↵ sin ✓ + sin↵ cos ✓)

= (a cos ✓ � b sin ✓, a sin ✓ + b cos ✓)

!✓

a0

b0

◆=

✓cos ✓ � sin ✓sin ✓ cos ✓

◆✓ab

r0 = Ra(✓)r = Rp(�✓)r

6

2D Rotations: Summary

7

2D Rotations: SummaryRa

(✓) =

✓cos ✓ � sin ✓sin ✓ cos ✓

7

2D Rotations: Summary

Rp(✓) =

✓cos ✓ sin ✓� sin ✓ cos ✓

◆= (Ra

(✓))T

Ra(✓) =

✓cos ✓ � sin ✓sin ✓ cos ✓

7

2D Rotations: Summary

Rp(✓) =

✓cos ✓ sin ✓� sin ✓ cos ✓

◆= (Ra

(✓))T

Ra(✓) =

✓cos ✓ � sin ✓sin ✓ cos ✓

Active: r0 = Ra(✓)r

7

2D Rotations: Summary

Rp(✓) =

✓cos ✓ sin ✓� sin ✓ cos ✓

◆= (Ra

(✓))T

Ra(✓) =

✓cos ✓ � sin ✓sin ✓ cos ✓

Active: r0 = Ra(✓)r

Passive: r0 = Rp(✓)r = Ra(�✓)r

e0i = Rpij(✓)ej

7

Example

(2,3)

45°

(2,3)

45°

-45°

8

ExampleACTIVE

(2,3)

45°

(2,3)

45°

-45°

8

ExampleACTIVE PASSIVE

(2,3)

45°

(2,3)

45°

-45°

8

Complex NumbersPOLAR REPRESENTATION

GRAPHICAL REPRESENTATION

9

Complex NumbersPOLAR REPRESENTATION

z = ⇢ei✓ = ⇢(cos ✓ + i sin ✓)

a = ⇢ cos ✓; b = ⇢ sin ✓; ⇢ = |z|; ✓ = tan

�1 b

a

GRAPHICAL REPRESENTATION

9

Complex NumbersPOLAR REPRESENTATION

z = ⇢ei✓ = ⇢(cos ✓ + i sin ✓)

a = ⇢ cos ✓; b = ⇢ sin ✓; ⇢ = |z|; ✓ = tan

�1 b

a

x

iy

a

b

GRAPHICAL REPRESENTATION

9

Complex NumbersPOLAR REPRESENTATION

z = ⇢ei✓ = ⇢(cos ✓ + i sin ✓)

a = ⇢ cos ✓; b = ⇢ sin ✓; ⇢ = |z|; ✓ = tan

�1 b

a

x

iy

a

b

GRAPHICAL REPRESENTATION CONNECTION TO ROTATIONSei✓z

9

Complex NumbersPOLAR REPRESENTATION

z = ⇢ei✓ = ⇢(cos ✓ + i sin ✓)

a = ⇢ cos ✓; b = ⇢ sin ✓; ⇢ = |z|; ✓ = tan

�1 b

a

x

iy

a

b

GRAPHICAL REPRESENTATION CONNECTION TO ROTATIONSei✓z

z =1p2(1 + i); ✓ =

4

ei✓z =

✓1p2(1 + i)

◆2

= i

9

Complex NumbersPOLAR REPRESENTATION

z = ⇢ei✓ = ⇢(cos ✓ + i sin ✓)

a = ⇢ cos ✓; b = ⇢ sin ✓; ⇢ = |z|; ✓ = tan

�1 b

a

x

iy

a

b

GRAPHICAL REPRESENTATION CONNECTION TO ROTATIONSei✓z

z =1p2(1 + i); ✓ =

4

ei✓z =

✓1p2(1 + i)

◆2

= i

9

Complex NumbersPOLAR REPRESENTATION

z = ⇢ei✓ = ⇢(cos ✓ + i sin ✓)

a = ⇢ cos ✓; b = ⇢ sin ✓; ⇢ = |z|; ✓ = tan

�1 b

a

x

iy

a

b

GRAPHICAL REPRESENTATION CONNECTION TO ROTATIONSei✓z

z =1p2(1 + i); ✓ =

4

ei✓z =

✓1p2(1 + i)

◆2

= i

2D ROTATION = MULTIPLICATION BY A UNIT COMPLEX NUMBER9

3D Rotations

10

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.

3D Rotations

10

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.

3D Rotations

ex

ey

ez

β1β2

β3 n

10

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.

3D Rotations

ˆn = (cos�1, cos�2, cos�3)

cos

2 �1 + cos

2 �2 + cos

2 �3 = 1

ex

ey

ez

β1β2

β3 n

10

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.

3D Rotations

ˆn = (cos�1, cos�2, cos�3)

cos

2 �1 + cos

2 �2 + cos

2 �3 = 1

Axis-angle pair: (

ˆn,!)Representation 1:

ex

ey

ez

β1β2

β3 n

10

Core rotation conventions

11

Core rotation conventions

11

Convention 1: When dealing with 3D rotations,

all cartesian reference frames will be right-handed.

Core rotation conventions

11

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.

Core rotation conventions

11

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.

Core rotation conventions

11

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,⇡].

Core rotation conventions

11

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 '1 2 [0, 2⇡], � 2 [0,⇡], and '2 2 [0, 2⇡].

Euler has shown that any 3D rotation can be decomposed into a sequence of, at the most, three separate rotations around mutually perpendicular 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 angles (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.

Euler angle representation

12

Euler angle representation

13

Euler angle representationBunge convention (zxz) : ('1,�,'2)

13

Euler angle representationBunge convention (zxz) : ('1,�,'2)

xy

z

13

Euler angle representationBunge convention (zxz) : ('1,�,'2)

xy

z

x’

y’

z’

'1

13

Euler angle representationBunge convention (zxz) : ('1,�,'2)

xy

z

x’

y’

z’

'1 x’’

y’’

z’’

13

Euler angle representationBunge convention (zxz) : ('1,�,'2)

xy

z

x’

y’

z’

'1 x’’

y’’

z’’

x’’’

y’’’z’’’

'2

13

Euler angle representationBunge convention (zxz) : ('1,�,'2)

xy

z

x’

y’

z’

'1 x’’

y’’

z’’

x’’’

y’’’z’’’

'2

✓ = ('1,�,'2)13

Euler angle space

14

Euler angle space

M�

M�

)

�S

�S

S

14

Euler angle space

M�

M�

)

�S

�S

S

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

Euler angle space

M�

M�

)

�S

�S

S

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

MotivationOver 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

MotivationOver 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

MotivationOver 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

MotivationOver 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

MotivationOver 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

MotivationOver 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

No two participants agreed on all representations!

mostly discrepancies in signs

Surprise…

18

No two participants agreed on all representations!

mostly discrepancies in signs

Surprise…

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: Quaternion 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

@�0.962829 0.269219 0.021933�0.263299 �0.953569 0.1462210.060280 0.135011 0.989009

1

A

20

These results indicate that something is clearly incorrect.

Everybody agrees on the rotation matrix:

0

@�0.962829 0.269219 0.021933�0.263299 �0.953569 0.1462210.060280 0.135011 0.989009

1

A

20

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.

Everybody agrees on the rotation matrix:

0

@�0.962829 0.269219 0.021933�0.263299 �0.953569 0.1462210.060280 0.135011 0.989009

1

A

20

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.

Everybody agrees on the rotation matrix:

0

@�0.962829 0.269219 0.021933�0.263299 �0.953569 0.1462210.060280 0.135011 0.989009

1

A

20

So, who turned out to be completely correct?

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.

Everybody agrees on the rotation matrix:

0

@�0.962829 0.269219 0.021933�0.263299 �0.953569 0.1462210.060280 0.135011 0.989009

1

A

20

So, who turned out to be completely correct?

Peter Konijnenberg.

Everybody else had at least one inconsistency. . .

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)

Core rotation conventions

3D Rotation Representations

22

The axis-angle pair is essentially useless for computational purposes…

3D Rotation Representations

22

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:

3D Rotation Representations

22

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:

3D Rotation Representations

n̂f(!)

22

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:

3D Rotation Representations

n̂f(!)

f must be a well-behaved monotonic function of the angle

22

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:

3D Rotation Representations

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 vector22

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:

3D Rotation Representations

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 vector22

�P n̂!

�P n̂ tan!

2

�P n̂ sin!

2

�P n̂ tan!

4

�P n̂

3

4(! � sin!)

� 13

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:

3D Rotation Representations

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 vector22

�P n̂!

�P n̂ tan!

2

�P n̂ sin!

2

�P n̂ tan!

4

�P n̂

3

4(! � sin!)

� 13

axis-angle pair

(�P ˆn,!)

Straight multiplication is not used very often

3D Rotations

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

We’ll deal with quaternions on the following slides; they require a bit of explanation…

The homochoric representation only makes sense after you understand quaternions

23

very useful for visualization of rotations and textures

�P n̂!

�P n̂ tan!

2

�P n̂ sin!

2

�P n̂ tan!

4

�P n̂

3

4(! � sin!)

� 13

neo-Eulerian scaling functions

0.0 0.5 1.0 1.5 2.0 2.5 3.00.0

0.5

1.0

1.5

2.0

2.5

3.0

Rotation angle ω

Neo

-eul

eria

n fu

nctio

n f (ω)

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?

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...)

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

25

Complex numbers and rotations in 3D?

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.

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

25

Complex numbers and rotations in 3D?

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.

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

25

q = q0 + q1i + q2j + q3k

Quaternionsq = a+ ib+ jc+ kd

i2 = j2 = k2 = �1

ij = �ji = k jk = �kj = i ki = �ik = j

26

Quaternionsq = a+ ib+ jc+ kd

i2 = j2 = k2 = �1

ij = �ji = k jk = �kj = i ki = �ik = j

quaternion multiplication is non-commutative

26

Quaternionsq = 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

Quaternionsq = 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

Quaternionsq = 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 = [0, b, c, d] is a pure quaternion, also known as a versor

q = [a,q] q = bi + cj + dk

26

Quaternionsq = 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 = [0, b, c, d] is a pure quaternion, also known as a versor

quaternion norm: |q|2 = q q⇤ = a2 + b2 + c2 + d2

quaternion conjugation: q⇤ = [a,�q]

q = [a,q] q = bi + cj + dk

26

Quaternion Operations

27

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

ADDITION

27

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

ADDITION

MULTIPLICATION[p0, p1, p2, p3][q0, q1, q2, q3] = [p0q0 � p1q1 � p2q2 � p3q3,

p0q1 + q0p1 + p2q3 � p3q2,

p0q2 + q0p2 + p3q1 � p1q3,

p0q3 + q0p3 + p1q2 � p2q1]

27

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

ADDITION

[p0,p][q0,q] = [p0q0 � p · q, p0q+ q0p+ p⇥ q]

MULTIPLICATION[p0, p1, p2, p3][q0, q1, q2, q3] = [p0q0 � p1q1 � p2q2 � p3q3,

p0q1 + q0p1 + p2q3 � p3q2,

p0q2 + q0p2 + p3q1 � p1q3,

p0q3 + q0p3 + p1q2 � p2q1]

27

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

ADDITION

[p0,p][q0,q] = [p0q0 � p · q, p0q+ q0p+ p⇥ q]

pq 6= qp

MULTIPLICATION[p0, p1, p2, p3][q0, q1, q2, q3] = [p0q0 � p1q1 � p2q2 � p3q3,

p0q1 + q0p1 + p2q3 � p3q2,

p0q2 + q0p2 + p3q1 � p1q3,

p0q3 + q0p3 + p1q2 � p2q1]

27

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

ADDITION

[p0,p][q0,q] = [p0q0 � p · q, p0q+ q0p+ p⇥ q]

pq 6= qp

MULTIPLICATION[p0, p1, p2, p3][q0, q1, q2, q3] = [p0q0 � p1q1 � p2q2 � p3q3,

p0q1 + q0p1 + p2q3 � p3q2,

p0q2 + q0p2 + p3q1 � p1q3,

p0q3 + q0p3 + p1q2 � p2q1]

27

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

ADDITION

[p0,p][q0,q] = [p0q0 � p · q, p0q+ q0p+ p⇥ q]

pq 6= qp

MULTIPLICATION[p0, p1, p2, p3][q0, q1, q2, q3] = [p0q0 � p1q1 � p2q2 � p3q3,

p0q1 + q0p1 + p2q3 � p3q2,

p0q2 + q0p2 + p3q1 � p1q3,

p0q3 + q0p3 + p1q2 � p2q1]

27

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

ADDITION

[p0,p][q0,q] = [p0q0 � p · q, p0q+ q0p+ p⇥ q]

pq 6= qp

MULTIPLICATION[p0, p1, p2, p3][q0, q1, q2, q3] = [p0q0 � p1q1 � p2q2 � p3q3,

p0q1 + q0p1 + p2q3 � p3q2,

p0q2 + q0p2 + p3q1 � p1q3,

p0q3 + q0p3 + p1q2 � p2q1]

pq + qp = 2[p0q0 � p · q, p0q+ q0p]pq � qp = 2[0,p⇥ q]

27

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

ADDITION

[p0,p][q0,q] = [p0q0 � p · q, p0q+ q0p+ p⇥ q]

INVERSEq�1 = q⇤/|q|2 = [q0,�q]/(q20 + q21 + q22 + q23)

pq 6= qp

MULTIPLICATION[p0, p1, p2, p3][q0, q1, q2, q3] = [p0q0 � p1q1 � p2q2 � p3q3,

p0q1 + q0p1 + p2q3 � p3q2,

p0q2 + q0p2 + p3q1 � p1q3,

p0q3 + q0p3 + p1q2 � p2q1]

pq + qp = 2[p0q0 � p · q, p0q+ q0p]pq � qp = 2[0,p⇥ q]

27

ExampleMultiply the following quaternions: p =

⇥12 ,

12 ,

12 ,

12

⇤and

q =

⇥12 ,

�12 , �1

2 , �12

⇤using the vectorial expression.

28

ExampleMultiply the following quaternions: p =

⇥12 ,

12 ,

12 ,

12

⇤and

q =

⇥12 ,

�12 , �1

2 , �12

⇤using the vectorial expression.

p0 = 12 , q0 = 1

2 , p = [ 12 ,12 ,

12 ] and q = [�1

2 , �12 , �1

2 ]

28

ExampleMultiply the following quaternions: p =

⇥12 ,

12 ,

12 ,

12

⇤and

q =

⇥12 ,

�12 , �1

2 , �12

⇤using the vectorial expression.

Scalar part: p0q0 � p · q

p0 = 12 , q0 = 1

2 , p = [ 12 ,12 ,

12 ] and q = [�1

2 , �12 , �1

2 ]

= 14 �

�3⇥ �1

4

�= 1

28

ExampleMultiply the following quaternions: p =

⇥12 ,

12 ,

12 ,

12

⇤and

q =

⇥12 ,

�12 , �1

2 , �12

⇤using the vectorial expression.

Scalar part: p0q0 � p · q

p0 = 12 , q0 = 1

2 , p = [ 12 ,12 ,

12 ] and q = [�1

2 , �12 , �1

2 ]

= 14 �

�3⇥ �1

4

�= 1

Vector part: p0q+ q0p+ p⇥ q

28

ExampleMultiply the following quaternions: p =

⇥12 ,

12 ,

12 ,

12

⇤and

q =

⇥12 ,

�12 , �1

2 , �12

⇤using the vectorial expression.

Scalar part: p0q0 � p · q

p0 = 12 , q0 = 1

2 , p = [ 12 ,12 ,

12 ] and q = [�1

2 , �12 , �1

2 ]

= 14 �

�3⇥ �1

4

�= 1

Vector part: p0q+ q0p+ p⇥ q

0

1

2

0

@�12�12�12

1

A+1

2

0

@121212

1

A

(0, 0, 0)

28

ExampleMultiply the following quaternions: p =

⇥12 ,

12 ,

12 ,

12

⇤and

q =

⇥12 ,

�12 , �1

2 , �12

⇤using the vectorial expression.

Scalar part: p0q0 � p · q

p0 = 12 , q0 = 1

2 , p = [ 12 ,12 ,

12 ] and q = [�1

2 , �12 , �1

2 ]

= 14 �

�3⇥ �1

4

�= 1

Vector part: p0q+ q0p+ p⇥ q12

12

12

12

12

12

�12

�12

�12

�12

�12

�12

0

1

2

0

@�12�12�12

1

A+1

2

0

@121212

1

A

(0, 0, 0)

28

ExampleMultiply the following quaternions: p =

⇥12 ,

12 ,

12 ,

12

⇤and

q =

⇥12 ,

�12 , �1

2 , �12

⇤using the vectorial expression.

Scalar part: p0q0 � p · q

p0 = 12 , q0 = 1

2 , p = [ 12 ,12 ,

12 ] and q = [�1

2 , �12 , �1

2 ]

= 14 �

�3⇥ �1

4

�= 1

Vector part: p0q+ q0p+ p⇥ q12

12

12

12

12

12

�12

�12

�12

�12

�12

�12

0

1

2

0

@�12�12�12

1

A+1

2

0

@121212

1

A

(0, 0, 0)

28

ExampleMultiply the following quaternions: p =

⇥12 ,

12 ,

12 ,

12

⇤and

q =

⇥12 ,

�12 , �1

2 , �12

⇤using the vectorial expression.

Scalar part: p0q0 � p · q

p0 = 12 , q0 = 1

2 , p = [ 12 ,12 ,

12 ] and q = [�1

2 , �12 , �1

2 ]

= 14 �

�3⇥ �1

4

�= 1

Vector part: p0q+ q0p+ p⇥ q12

12

12

12

12

12

�12

�12

�12

�12

�12

�12

⇥ ⇥ ⇥

0

1

2

0

@�12�12�12

1

A+1

2

0

@121212

1

A

(0, 0, 0)

28

ExampleMultiply the following quaternions: p =

⇥12 ,

12 ,

12 ,

12

⇤and

q =

⇥12 ,

�12 , �1

2 , �12

⇤using the vectorial expression.

Scalar part: p0q0 � p · q

p0 = 12 , q0 = 1

2 , p = [ 12 ,12 ,

12 ] and q = [�1

2 , �12 , �1

2 ]

= 14 �

�3⇥ �1

4

�= 1

Vector part: p0q+ q0p+ p⇥ q12

12

12

12

12

12

�12

�12

�12

�12

�12

�12

⇥ ⇥ ⇥

(0, 0, 0)

0

1

2

0

@�12�12�12

1

A+1

2

0

@121212

1

A

(0, 0, 0)

28

ExampleMultiply the following quaternions: p =

⇥12 ,

12 ,

12 ,

12

⇤and

q =

⇥12 ,

�12 , �1

2 , �12

⇤using the vectorial expression.

Scalar part: p0q0 � p · q

p0 = 12 , q0 = 1

2 , p = [ 12 ,12 ,

12 ] and q = [�1

2 , �12 , �1

2 ]

= 14 �

�3⇥ �1

4

�= 1

Vector part: p0q+ q0p+ p⇥ q12

12

12

12

12

12

�12

�12

�12

�12

�12

�12

⇥ ⇥ ⇥

(0, 0, 0)

0

1

2

0

@�12�12�12

1

A+1

2

0

@121212

1

A

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

28

ExampleMultiply the following quaternions: p =

⇥12 ,

12 ,

12 ,

12

⇤and

q =

⇥12 ,

�12 , �1

2 , �12

⇤using the vectorial expression.

Scalar part: p0q0 � p · q

p0 = 12 , q0 = 1

2 , p = [ 12 ,12 ,

12 ] and q = [�1

2 , �12 , �1

2 ]

= 14 �

�3⇥ �1

4

�= 1

Vector part: p0q+ q0p+ p⇥ q12

12

12

12

12

12

�12

�12

�12

�12

�12

�12

⇥ ⇥ ⇥

(0, 0, 0)

0

1

2

0

@�12�12�12

1

A+1

2

0

@121212

1

A

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

This is to be expected since q = p⇤, so that pp⇤ = |p|2 = 1.

28

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

We know that they represent 2D rotations

In the same way, unit quaternions represent 3D rotations

Unit Quaternions

ei✓

|q| = 1

29

Given an axis-angle pair, computing the corresponding quaternion is very easy:

Unit Quaternions

Example: For the axis-angle pair ([111], 120°), what is the quaternion representation for P=-1?

30

(�P ˆn,!) !hcos

!

2

,�P ˆn sin

!

2

i

quaternion vector

Given an axis-angle pair, computing the corresponding quaternion is very easy:

Unit Quaternions

Example: For the axis-angle pair ([111], 120°), what is the quaternion representation for P=-1?

30

(�P ˆn,!) !hcos

!

2

,�P ˆn sin

!

2

i

quaternion vector

Given an axis-angle pair, computing the corresponding quaternion is very easy:

Unit Quaternions

Example: For the axis-angle pair ([111], 120°), what is the quaternion representation for P=-1?

30

! = 120� =2⇡

3

(�P ˆn,!) !hcos

!

2

,�P ˆn sin

!

2

i

quaternion vector

Given an axis-angle pair, computing the corresponding quaternion is very easy:

Unit Quaternions

Example: For the axis-angle pair ([111], 120°), what is the quaternion representation for P=-1?

30

! = 120� =2⇡

3! cos

3

=

1

2

, sin⇡

3

=

p3

2

(�P ˆn,!) !hcos

!

2

,�P ˆn sin

!

2

i

quaternion vector

Given an axis-angle pair, computing the corresponding quaternion is very easy:

Unit Quaternions

Example: For the axis-angle pair ([111], 120°), what is the quaternion representation for P=-1?

30

! = 120� =2⇡

3! cos

3

=

1

2

, sin⇡

3

=

p3

2

hcos

!

2

, sin!

2

ˆni=

"1

2

,

p3

2

1p3

(1, 1, 1)

#! q =

1

2

,1

2

,1

2

,1

2

(�P ˆn,!) !hcos

!

2

,�P ˆn sin

!

2

i

Equivalent Rotations

31

q(!) =hcos

!

2

,�P ˆn sin

!

2

i

q(2⇡ + !) =hcos(⇡ +

!

2

),�P ˆn sin(⇡ +

!

2

)

i;

=

h� cos

!

2

, P ˆn sin

!

2

i;

= �hcos

!

2

,�P ˆn sin

!

2

i;

= �q(!).

Equivalent Rotations

q and �q describe the same rotation.

31

q(!) =hcos

!

2

,�P ˆn sin

!

2

i

q(2⇡ + !) =hcos(⇡ +

!

2

),�P ˆn sin(⇡ +

!

2

)

i;

=

h� cos

!

2

, P ˆn sin

!

2

i;

= �hcos

!

2

,�P ˆn sin

!

2

i;

= �q(!).

Quaternion multiplication and P

pq ⌘ [p0q0 � p · q, q0p+ p0q+ Pp⇥ q]

Quaternion multiplication and P

P=+1 produces the traditional definition P=-1 is an alternative definition, already

discussed by Hamilton in 1844.

pq ⌘ [p0q0 � p · q, q0p+ p0q+ Pp⇥ q]

Quaternion multiplication and P

P=+1 produces the traditional definition P=-1 is an alternative definition, already

discussed by Hamilton in 1844.

quaternion rotation operator Lq(r) ⌘ vec (q[0, r]q⇤)

pq ⌘ [p0q0 � p · q, q0p+ p0q+ Pp⇥ q]

Quaternion multiplication and P

Lp(r) ⌘�p20 � ||p||2

�r+ 2(p · r)p+ 2Pp0(p⇥ r)

P=+1 produces the traditional definition P=-1 is an alternative definition, already

discussed by Hamilton in 1844.

quaternion rotation operator Lq(r) ⌘ vec (q[0, r]q⇤)

pq ⌘ [p0q0 � p · q, q0p+ p0q+ Pp⇥ q]

Quaternion multiplication and P

Lp(r) ⌘�p20 � ||p||2

�r+ 2(p · r)p+ 2Pp0(p⇥ r)

P=+1 produces the traditional definition P=-1 is an alternative definition, already

discussed by Hamilton in 1844.

quaternion rotation operator Lq(r) ⌘ vec (q[0, r]q⇤)

pq ⌘ [p0q0 � p · q, q0p+ p0q+ Pp⇥ q]

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

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

33

P = �1

Unit Quaternions and Rotations

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

qvq⇤ = [cos

4

, 0, 0, sin⇡

4

] [0, 1, 1, 1] [cos⇡

4

, 0, 0,� sin

4

]

= [

1p2

, 0, 0,1p2

] [

1p2

, 0,p2,

1p2

]

= [0,�1, 1, 1]

33

P = �1

Unit Quaternions and Rotations

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

qvq⇤ = [cos

4

, 0, 0, sin⇡

4

] [0, 1, 1, 1] [cos⇡

4

, 0, 0,� sin

4

]

= [

1p2

, 0, 0,1p2

] [

1p2

, 0,p2,

1p2

]

= [0,�1, 1, 1]

Therefore the rotated vector v0has components [�1, 1, 1].

33

P = �1

Unit Quaternions and Rotations

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

qvq⇤ = [cos

4

, 0, 0, sin⇡

4

] [0, 1, 1, 1] [cos⇡

4

, 0, 0,� sin

4

]

= [

1p2

, 0, 0,1p2

] [

1p2

, 0,p2,

1p2

]

= [0,�1, 1, 1]

Therefore the rotated vector v0has components [�1, 1, 1].

The nice thing is that this works for any rotation axis!

33

P = �1

Rotation Representations

34

Rotation Representations

34

Representation 1:

Representation 2:

Representation 3:

Representation 4: Rotation matrix: Rij

Representation 5: Homochoric vector h

Representation 6: Cubochoric vector c

Representation 7: Euler Angles ✓

Axis-angle pair: (�P ˆn,!)

Rodrigues vector: ⇢ = �P ˆn tan

!2

Unit quaternion:

⇥cos

!2 ,�P ˆn sin

!2

Rotation Representations

34

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

Representation 1:

Representation 2:

Representation 3:

Representation 4: Rotation matrix: Rij

Representation 5: Homochoric vector h

Representation 6: Cubochoric vector c

Representation 7: Euler Angles ✓

Axis-angle pair: (�P ˆn,!)

Rodrigues vector: ⇢ = �P ˆn tan

!2

Unit quaternion:

⇥cos

!2 ,�P ˆn sin

!2

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 – Xc 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 – Xc 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

The axis-angle pair (

ˆn,!) can be obtained from the Bunge Euler angles by using

the following relation:

(

ˆn,!) =

✓�P

⌧t cos �,�P

⌧t sin �,�P

⌧sin�,↵

◆(1)

where

t = tan

�2 ; � =

12 ('1 + '2); � =

12 ('1 � '2);

⌧ =

pt2 + sin

2 �; ↵ = 2arctan ⌧. (2)

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

(

ˆn,!) =

✓P

⌧t cos �,

P

⌧t sin �,

P

⌧sin�, 2⇡ � ↵

◆. (3)

Function: eu2ax

36

Unit quaternion sphere

37

Unit quaternion sphere

37

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].

Unit quaternion sphere

x

2 + y

2 + z

2 = 1 represents a sphere in 3D space

37

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].

Unit quaternion sphere

x

2 + y

2 + z

2 = 1 represents a sphere in 3D space

! q20 + q21 + q22 + q23 = 1 represents a sphere in 4D space

37

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].

Unit quaternion sphere

x

2 + y

2 + z

2 = 1 represents a sphere in 3D space

! q20 + q21 + q22 + q23 = 1 represents a sphere in 4D space

This sphere, S3, represents all 3D rotations (unit quaternions)

37

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].

Unit quaternion sphere

x

2 + y

2 + z

2 = 1 represents a sphere in 3D space

! q20 + q21 + q22 + q23 = 1 represents a sphere in 4D space

This sphere, S3, represents all 3D rotations (unit quaternions)

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

37

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].

Unit quaternion sphere

x

2 + y

2 + z

2 = 1 represents a sphere in 3D space

! q20 + q21 + q22 + q23 = 1 represents a sphere in 4D space

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

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].

Unit quaternion sphere

x

2 + y

2 + z

2 = 1 represents a sphere in 3D space

! q20 + q21 + q22 + q23 = 1 represents a sphere in 4D space

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 su�cient to consider only unit quaternions in one hemisphere,

say q0 � 0.

37

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].

Unit quaternion sphere

x

2 + y

2 + z

2 = 1 represents a sphere in 3D space

! q20 + q21 + q22 + q23 = 1 represents a sphere in 4D space

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 su�cient to consider only unit quaternions in one hemisphere,

say q0 � 0.We will call this the Northern quaternion hemisphere.

37

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].

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

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

S

38

Stereographic Projection (equal angle)

2D 3D

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

S

38

Stereographic Projection (equal angle)

2D 3D

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

S S

38

Stereographic Projection (equal angle)

2D 3D

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

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

38

Stereographic Projection (equal angle)

2D 3D 4D

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

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

38

Stereographic Projection (equal angle)

2D 3D 4D

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

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

?

38

Stereographic Projection (equal angle)

2D 3D 4D

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

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

?

Projection: 3D ball, bounded by an equatorial sphere

38

Stereographic Projection (equal angle)

2D 3D 4D

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

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

Projection: 3D ball, bounded by an equatorial sphere

38

Stereographic Projection (2D)2D

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

S

39

Stereographic Projection (2D)2D

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

S

Circle radius r = 1,

point (x, y) with x

2+ y

2= 1

39

Stereographic Projection (2D)2D

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

S

Circle radius r = 1,

point (x, y) with x

2+ y

2= 1

xp =x

1 + y

39

Stereographic Projection (2D)2D

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

S

Circle radius r = 1,

point (x, y) with x

2+ y

2= 1

We will only project points from the Northern hemi-circle (y>0); Projection point : (0,-1)

xp =x

1 + y

39

Stereographic Projection (3D)3D

SProjection: 2D disk, bounded by an equatorial circle

40

Stereographic Projection (3D)3D

SProjection: 2D disk, bounded by an equatorial circle

Sphere radius r = 1,

point (x, y, z) with x

2+ y

2+ z

2= 1

40

Stereographic Projection (3D)3D

SProjection: 2D disk, bounded by an equatorial circle

Sphere radius r = 1,

point (x, y, z) with x

2+ y

2+ z

2= 1

! (xp, yp) =

✓x

1 + z

,

y

1 + z

40

Stereographic Projection (3D)3D

SProjection: 2D disk, bounded by an equatorial circle

Sphere radius r = 1,

point (x, y, z) with x

2+ y

2+ z

2= 1

We will only project points from the Northern hemi-sphere (z>0); Projection point: (0,0,-1)

! (xp, yp) =

✓x

1 + z

,

y

1 + z

40

Stereographic Projection (4D)4D

?

Projection: 3D ball, bounded by an equatorial sphere

Projection point: (�1, 0, 0, 0) “South Pole”;

Northern hemi-hypersphere: q0 � 0;

Equatorial sphere: q0 = 0 ! ! = 180

�.

q0 = cos

!2 , so q0 � 0 means 0 ! ⇡

41

Stereographic Projection (4D)4D

Projection: 3D ball, bounded by an equatorial sphere

Projection point: (�1, 0, 0, 0) “South Pole”;

Northern hemi-hypersphere: q0 � 0;

Equatorial sphere: q0 = 0 ! ! = 180

�.

q0 = cos

!2 , so q0 � 0 means 0 ! ⇡

41

Stereographic Projection (4D)4D

Projection: 3D ball, bounded by an equatorial sphere

Hypersphere radius r = 1,point (q0, q1, q2, q3) with q20 + q21 + q22 + q23 = 1

Projection point: (�1, 0, 0, 0) “South Pole”;

Northern hemi-hypersphere: q0 � 0;

Equatorial sphere: q0 = 0 ! ! = 180

�.

q0 = cos

!2 , so q0 � 0 means 0 ! ⇡

41

Stereographic Projection (4D)4D

Projection: 3D ball, bounded by an equatorial sphere

Hypersphere radius r = 1,point (q0, q1, q2, q3) with q20 + q21 + q22 + q23 = 1

(xp, yp, zp) =

✓q1

1 + q0,

q2

1 + q0,

q3

1 + q0

Projection point: (�1, 0, 0, 0) “South Pole”;

Northern hemi-hypersphere: q0 � 0;

Equatorial sphere: q0 = 0 ! ! = 180

�.

q0 = cos

!2 , so q0 � 0 means 0 ! ⇡

41

Stereographic Projection (4D)

42

Stereographic Projection (4D)

42

Stereographic Projection (4D)

42

Stereographic Projection (4D)

i

-i

j-j

k

-k

1

42

Stereographic Projection (4D)

i

-i

j-j

k

-k

1

(xp, yp, zp) =

✓q1

1 + q0,

q2

1 + q0,

q3

1 + q0

42

Stereographic Projection (4D)

i

-i

j-j

k

-k

1

(xp, yp, zp) =

✓q1

1 + q0,

q2

1 + q0,

q3

1 + q0

I = (1, 0, 0, 0) ! (xp, yp, zp) = (0, 0, 0)

42

Stereographic Projection (4D)

i

-i

j-j

k

-k

1

(xp, yp, zp) =

✓q1

1 + q0,

q2

1 + q0,

q3

1 + q0

j = (0, 0, 1, 0) ! (xp, yp, zp) = (0, 1, 0)

I = (1, 0, 0, 0) ! (xp, yp, zp) = (0, 0, 0)

42

Stereographic Projection (4D)

i

-i

j-j

k

-k

1The identity rotation is represented at the origin of the SP sphere; 180° rotations around the cartesian axes are represented by the “pure” imaginary units i, j, and k.

(xp, yp, zp) =

✓q1

1 + q0,

q2

1 + q0,

q3

1 + q0

j = (0, 0, 1, 0) ! (xp, yp, zp) = (0, 1, 0)

I = (1, 0, 0, 0) ! (xp, yp, zp) = (0, 0, 0)

42

Stereographic Projection (4D)

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 !

i

-i

j-j

k

-k

1The identity rotation is represented at the origin of the SP sphere; 180° rotations around the cartesian axes are represented by the “pure” imaginary units i, j, and k.

(xp, yp, zp) =

✓q1

1 + q0,

q2

1 + q0,

q3

1 + q0

j = (0, 0, 1, 0) ! (xp, yp, zp) = (0, 1, 0)

I = (1, 0, 0, 0) ! (xp, yp, zp) = (0, 0, 0)

42

Lambert Projection 3D (equal area)

43

Lambert Projection 3D (equal area)This point is at infinity …

43

Lambert Projection 3D (equal area)

Unit radius 3D sphere ! 2D disk

This point is at infinity …

43

Lambert Projection 3D (equal area)

(X,Y ) ! (x, y, z) =

X

r1� X

2 + Y

2

4, Y

r1� X

2 + Y

2

4,

X

2 + Y

2

2� 1

!

(x, y, z) ! (X,Y ) =

x

r2

1� z

, y

r2

1� z

!

Unit radius 3D sphere ! 2D disk

This point is at infinity …

43

Lambert Projection 3D (equal area)

(X,Y ) ! (x, y, z) =

X

r1� X

2 + Y

2

4, Y

r1� X

2 + Y

2

4,

X

2 + Y

2

2� 1

!

(x, y, z) ! (X,Y ) =

x

r2

1� z

, y

r2

1� z

!

Unit radius 3D sphere ! 2D disk

This point is at infinity …

Usually, only one hemisphere is projected this way, to avoid an infinite plot and large distortions.

43

Lambert Projection 3D (equal area)

(X,Y ) ! (x, y, z) =

X

r1� X

2 + Y

2

4, Y

r1� X

2 + Y

2

4,

X

2 + Y

2

2� 1

!

(x, y, z) ! (X,Y ) =

x

r2

1� z

, y

r2

1� z

!

Unit radius 3D sphere ! 2D disk

This point is at infinity …

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”)

44

P = �1

Lambert Projection 4D (equal “area”)Unit radius 4D sphere ! 3D ball

44

P = �1

Lambert Projection 4D (equal “area”)Unit radius 4D sphere ! 3D ball

Quaternion Northern hemisphere ! 3D ball

44

P = �1

Lambert Projection 4D (equal “area”)Unit radius 4D sphere ! 3D ball

Quaternion Northern hemisphere ! 3D ball

q = (q0, q1, q2, q3);

=

⇣cos

!

2

, sin!

2

ˆn⌘

0 ! ⇡

q0 � 0

44

P = �1

Lambert Projection 4D (equal “area”)Unit radius 4D sphere ! 3D ball

Quaternion Northern hemisphere ! 3D ball

q = (q0, q1, q2, q3);

=

⇣cos

!

2

, sin!

2

ˆn⌘

0 ! ⇡

q0 � 0

44

P = �1

Lambert Projection 4D (equal “area”)Unit radius 4D sphere ! 3D ball

Quaternion Northern hemisphere ! 3D ball

q = (q0, q1, q2, q3);

=

⇣cos

!

2

, sin!

2

ˆn⌘

0 ! ⇡

q0 � 0

Lambert projection: ! h = (x, y, z) =

ˆn�34 (! � sin!)

� 13

44

P = �1

Lambert Projection 4D (equal “area”)Unit radius 4D sphere ! 3D ball

Quaternion Northern hemisphere ! 3D ball

Representation 5: Homochoric vector h

q = (q0, q1, q2, q3);

=

⇣cos

!

2

, sin!

2

ˆn⌘

0 ! ⇡

q0 � 0

Lambert projection: ! h = (x, y, z) =

ˆn�34 (! � sin!)

� 13

44

P = �1

Lambert Projection 4D (equal “area”)Unit radius 4D sphere ! 3D ball

Quaternion Northern hemisphere ! 3D ball

Representation 5: Homochoric vector h

q = (q0, q1, q2, q3);

=

⇣cos

!

2

, sin!

2

ˆn⌘

0 ! ⇡

q0 � 0

Inverse projection: there is no analytical inverse . . .

Lambert projection: ! h = (x, y, z) =

ˆn�34 (! � sin!)

� 13

44

P = �1

Inversion of homochoric coordinatesDefine a 16-component constant vector � with components listed in the tablebelow; set h = |h|2; if h = 0, then (n̂,!) = ([0, 0, 1], 0). Otherwise, set h0 =h/

ph and compute the sum:

s =16X

i=1

�i hi�1;

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

i �4i+1 �4i+2 �4i+3 �4i+4

0 1.000000000001885 -0.500000000219485 -0.024999992127593 -0.0039287015447811 -0.000815270153545 -0.000200950042612 -0.000023979867761 -0.0000820286892662 0.000124487150421 -0.000174911421482 0.000170348193414 -0.0001206206500413 0.000059719705869 -0.000019807567240 0.000003953714684 -0.000000365550014

Table 1: Coe�cients �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:

↵✓ =

0

@0 1 0�1 0 00 0 1

1

A ;

• Quaternion:

q✓ =

✓1p2, 0, 0,� 1p

2

◆;

• 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:

↵✓ =

0

@0 1 0�1 0 00 0 1

1

A ;

• Quaternion:

q✓ =

✓1p2, 0, 0,� 1p

2

◆;

• Axis-angle pair:(n̂,!)✓ = ([001̄], 90�) ;

• Rodrigues-Frank vector:⇢✓ = (0, 0,�1) ;

• Homochoric vector:h✓ = (0, 0,�0.7536693) .

P = �10

@0 1 0�1 0 00 0 1

1

A

✓1p2, 0, 0,

1p2

([001], 90�)

(0, 0, 1)

(0, 0, 0.7536693)46

Cubochoric representation

47

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).

Cubochoric representation

47

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).

Cubochoric representation

(a) (b)

xy

z

xy

z

47

48

48

48

48

To get the correct cube volume, put a0 = ⇡23; a =

⇣⇡5

6

⌘ 16; � =

p⇡/6

48

Cubochoric representation

49

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).

Cubochoric representation

Representation 6: Cubochoric vector c

49

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).

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.

49

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).

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 di�culty 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.

49

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).

Rotations & Crystal Symmetry

50

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

Rotations & Crystal Symmetry

50

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:

Rotations & Crystal Symmetry

50

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:

Rotations & Crystal Symmetry

50

Sa = OaRa

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:

Rotations & Crystal Symmetry

50

Sa = OaRa

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

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:

Rotations & Crystal Symmetry

50

Sa = OaRa

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

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

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.

This means that for point group we only need to consider the point group .

The pure rotation point groups are:

Rotations & Crystal Symmetry

4

m3̄2

m432

1, 2, 222, 4, 422, 3, 32, 6, 622, 23, and 432

51

Rotations & Crystal Symmetry

1 1, 1̄2 2, m, 2/m222 222, mm2, mmm4 4, 4̄, 4/m422 422, 4mm, 4̄2m, 4/mmm3 3, 3̄32 32, 3m, 3̄m6 6, 6̄, 6/m622 622, 6mm, 6̄m2, 6/mmm23 23, m3432 432, 4̄3m, m3̄m.

52

Rotations & Crystal Symmetry

1 1, 1̄2 2, m, 2/m222 222, mm2, mmm4 4, 4̄, 4/m422 422, 4mm, 4̄2m, 4/mmm3 3, 3̄32 32, 3m, 3̄m6 6, 6̄, 6/m622 622, 6mm, 6̄m2, 6/mmm23 23, m3432 432, 4̄3m, m3̄m.

No symmetry

52

Cyclic

Cyclic

Cyclic

Cyclic

Rotations & Crystal Symmetry

1 1, 1̄2 2, m, 2/m222 222, mm2, mmm4 4, 4̄, 4/m422 422, 4mm, 4̄2m, 4/mmm3 3, 3̄32 32, 3m, 3̄m6 6, 6̄, 6/m622 622, 6mm, 6̄m2, 6/mmm23 23, m3432 432, 4̄3m, m3̄m.

No symmetry

52

Dihedral

Dihedral

Dihedral

Dihedral

Cyclic

Cyclic

Cyclic

Cyclic

Rotations & Crystal Symmetry

1 1, 1̄2 2, m, 2/m222 222, mm2, mmm4 4, 4̄, 4/m422 422, 4mm, 4̄2m, 4/mmm3 3, 3̄32 32, 3m, 3̄m6 6, 6̄, 6/m622 622, 6mm, 6̄m2, 6/mmm23 23, m3432 432, 4̄3m, m3̄m.

No symmetry

52

Tetrahedral

Dihedral

Dihedral

Dihedral

Dihedral

Cyclic

Cyclic

Cyclic

Cyclic

Rotations & Crystal Symmetry

1 1, 1̄2 2, m, 2/m222 222, mm2, mmm4 4, 4̄, 4/m422 422, 4mm, 4̄2m, 4/mmm3 3, 3̄32 32, 3m, 3̄m6 6, 6̄, 6/m622 622, 6mm, 6̄m2, 6/mmm23 23, m3432 432, 4̄3m, m3̄m.

No symmetry

52

OctahedralTetrahedral

Dihedral

Dihedral

Dihedral

Dihedral

Cyclic

Cyclic

Cyclic

Cyclic

Rotations & Crystal Symmetry

1 1, 1̄2 2, m, 2/m222 222, mm2, mmm4 4, 4̄, 4/m422 422, 4mm, 4̄2m, 4/mmm3 3, 3̄32 32, 3m, 3̄m6 6, 6̄, 6/m622 622, 6mm, 6̄m2, 6/mmm23 23, m3432 432, 4̄3m, m3̄m.

No symmetry

52

Simple example: point group 4

Rotations & Crystal Symmetry

53

P = �1

Simple example: point group 4

Rotations & Crystal Symmetry

53

P = �1

q1 = (1, 0, 0, 0) ;

q2 =

✓1p2, 0, 0,

1p2

◆;

q3 = (0, 0, 0, 1) ;

q4 =

✓1p2, 0, 0,

�1p2

◆.

Simple example: point group 4

Rotations & Crystal Symmetry

53

P = �1

120�@[111] : p =

✓1

2,1

2,1

2,1

2

q1 = (1, 0, 0, 0) ;

q2 =

✓1p2, 0, 0,

1p2

◆;

q3 = (0, 0, 0, 1) ;

q4 =

✓1p2, 0, 0,

�1p2

◆.

Simple example: point group 4

Rotations & Crystal Symmetry

53

P = �1

120�@[111] : p =

✓1

2,1

2,1

2,1

2

q1 = (1, 0, 0, 0) ;

q2 =

✓1p2, 0, 0,

1p2

◆;

q3 = (0, 0, 0, 1) ;

q4 =

✓1p2, 0, 0,

�1p2

◆.

q1p =

✓1

2,1

2,1

2,1

2

◆;

q2p =

✓0, 0,

1p2,1p2

◆;

q3p =

✓1

2,1

2,�1

2,�1

2

◆;

q4p =

✓1p2,1p2, 0, 0

◆.

Simple example: point group 4

Rotations & Crystal Symmetry

53

P = �1

120�@[111] : p =

✓1

2,1

2,1

2,1

2

q1 = (1, 0, 0, 0) ;

q2 =

✓1p2, 0, 0,

1p2

◆;

q3 = (0, 0, 0, 1) ;

q4 =

✓1p2, 0, 0,

�1p2

◆.

q1p =

✓1

2,1

2,1

2,1

2

◆;

q2p =

✓0, 0,

1p2,1p2

◆;

q3p =

✓1

2,1

2,�1

2,�1

2

◆;

q4p =

✓1p2,1p2, 0, 0

◆.

120�@[111]

180�@[011]

120�@[11̄1̄]

90�@[100]

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.

Fundamental Zones

54

Dihedral groups: 2n-sided prism with top and bottom facets

perpendicular to the [001] axis, at distance of tan[⇡/(2n)] fromthe 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)] fromthe origin, and 2n square prism faces at distance 1.

422

55

Cyclic groups: planes perpendicular to the [001] axis,

at distance of tan[⇡/(2n)] from the origin.

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 octagonalfaces at tan[⇡/4], and eight triangular faces at distancetan[⇡/6].

432

57

Octahedral FZ in Euler Space

58

M�

M�

)

�S

�S

S

Octahedral FZ in Euler Space

58

M�

M�

)

�S

�S

S

Octahedral FZ in Euler Space

ϕ2

ϕ1

Φ

0

54.7356°

π

π/4

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

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

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

62

QUESTIONS ?

62

Recommended