rotations, rotations, and more...
TRANSCRIPT
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]
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]
Therefore the rotated vector v0has components [�1, 1, 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]
Therefore the rotated vector v0has components [�1, 1, 1].
The nice thing is that this works for any rotation axis!
n̂
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
Φ
2π
2π
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