logo back up home forward   further reading more topics »

Maths - Rotation Group and Reflection Group

Group Theory

We can use this rotation quaternion to calculate the rotated point from the original position of the point, this allows us to translate points without using matrices. The majority of applications involve pure rotations, for this we restrict the quaternions to those with unit magnitude and we use only multiplications and not addition to represent a combination of different rotations. When quaternions are normalised in this way, together with the multiplication operation to combine rotations, form a mathematical group, in this case SU(2).

Rotation Group and Reflection Group

How do 3D reflections and 3D rotations interact?

When we are trying to understand a difficult problem (3D reflections and rotations are difficult for me) it often helps to solve a simpler but related problem.

So instead of infinite groups such as SU(2) groups explained here. Let us consider a finite group -.

Let this finite group contain the following operations:

1) reflection in the x axis (y,z plane) x › -x
2) reflection in the y axis (x,z plane) y › -y
3) reflection in the z axis (x,y plane) z › -z

This group is not yet closed we need to consider the following combinations:

4) reflection in the x axis followed by reflection in the y axis ( x › -x , y › -y) this is equivalent to a rotation of 180 degrees about the z axis.
5) reflection in the z axis followed by reflection in the x axis ( z › -z , x › -x) this is equivalent to a rotation of 180 degrees about the y axis.
6) reflection in the y axis followed by reflection in the z axis ( y › -y , z › -z) this is equivalent to a rotation of 180 degrees about the x axis.

There is one final combination:

7) reflection in all 3 axies ( x › -x , y › -y, z › -z), this is a combination of a reflection and a rotation, it is like a reflection through a point rather than through a plane. What would we call such an operation - a rotflection?

Together with the identity element this gives us 8 operations:

  description transform quaternion representation
0 identity x › x , y › y, z › z p' = 1 * p * 1
1 reflection in the x axis x › -x , y › y, z › z p' = i * p * i
2 reflection in the y axis x › x , y › -y, z › z p' = j * p * j
3 reflection in the z axis x › x , y › y, z › -z p' = k * p * k
4 rotation of 180 degrees about the z axis x › -x , y › -y, z › z p' = i * j * p * j * i
p' = k * p *-k
5 rotation of 180 degrees about the y axis x › -x , y › y, z › -z p' = i * k * p * k * i
p' = j * p *-j
6 rotation of 180 degrees about the x axis x › x , y › -y, z › -z p' = j * k * p * k * j
p' = i * p *-i
7 reflection through origin point x › -x , y › -y, z › -z

p' = i * j * k * p * k * j * i
p' = k * k * p * k *-k
p' = -1 * p * 1

Note 1: inverting one axis produces a reflection in a plane, inverting two axies produces a rotation through 180 degrees, inverting 3 axies produces a reflection through a point.

Note 2: the quaternion representation either has the form p' = q * p * q for reflections or p' = q * p * -q for rotations.

Note 3: two reflections are combined by wrapping one round the other. For example, reflecting in x axis is:

p' = i * p * i

Then to reflect this result in the y axis, we wrap the whole result in j which gives:

p' = j * i * p * i * j

Note 4: although reflecting in x axis is given a quaternion representation of p' = i * p * i it could just as well have used the representation p' = -i * p * -i. In other words inverting poth the pre and post quaternion has no effect, so I have not incuded both options.

Combining these 8 elements

This table fully defines how these operations combine:

  0 1 2 3 4 5 6 7
0
0
1
2
3
4
5
6
7
1
1
0
4
5
2
3
7
6
2
2
4
0
6
1
7
3
5
3
3
5
6
0
7
1
2
4
4
4
2
1
7
0
6
5
3
5
5
3
7
1
6
0
4
2
6
6
7
3
2
5
4
0
1
7
7
6
5
4
3
2
1
0

We can replace the operation number in the table entry to give the quaternion representation:

  1 i j k -k -j -i -1
1
1
i
j
k
-k
-j
-i
-1
i
i
1
-k
-j
j
k
-1
-i
j
j
-k
1
-i
i
-1
k
-j
k
k
-j
-i
1
-1
i
j
-k
-k
-k
j
i
-1
1
-i
-j
k
-j
-j
k
-1
i
-i
1
-k
j
-i
-i
-1
k
j
-j
-k
1
i
-1
-1
-i
-j
-k
k
j
i
1

Note 1: this is a special notation, a negative sign indicates inversion (conjugation) of the second quaternion only. i.e.
plus sign: p' = q * p * q
negative sign: p' = q * p * -q

Question: is there such a concept of 'spinorial reflections'? What could this mean?

This is a 'double cover' of reflections in that '-i' produces the same reflection as 'i'. However, I cant find an equivalent to rotations, where rotation of 360 degrees swaps between the two forms. Two reflections always produce identity or a rotation. Combining a reflection and a rotation will produce another reflection so perhaps this will swap between the two forms?

Perhaps this idea only applies to continuous groups where a rotation through 360 degrees is a continuous movement on the surface of a manifold, this cant really apply to a finite group like this, which only involves jumps from one position to another. But reflections are always jumps aren't they?

Warning

This is a very special case, it is not a multiplication table for i,j & k

For example , rotations should anti-commute?

so i * j * p * -j * -i

rotates in the opposite direction to:

j * i * p * -i * -j

This is a special case because these rotations are only 180 degrees, which just happens to be the same as its inverse, but this is generally not the case.

So be careful not to learn the wrong lessons for continuous rotations.

More General Group

The above group does not cover the full properties of rotations, especially the anti-commute properties, we can therefore expand the group to make a larger superset of the finite group.

I guess what I'm trying to aim for is a set of 'base' operations where we could combine them by some function, in a lie group sort of way, to give a the full continuous 'infinite' group of reflections and rotations in 3D. I don't know if this is possible?

So, to expand the group, we add reflections in a plane at 45deg to two primary axes, and any other transforms these generate. These reflections are equivalent to swapping two axies. So we want to have a table of operations that has every combination of inverting and swapping axies.

I am still working on this table, there are a lot more entries that need to be added

  description transform quaternion representation
0 identity x › x , y › y, z › z p' = 1 * p * 1
1 reflection in the x axis x › -x , y › y, z › z p' = i * p * i
2 reflection in the y axis x › x , y › -y, z › z p' = j * p * j
3 reflection in the z axis x › x , y › y, z › -z p' = k * p * k
4 reflection in 45deg to x & y x › y , y › x, z › z p' = (0.7071 i + 0.7071 j) * p * (0.7071 i + 0.7071 j)
5 reflection in 45deg to y & z x › x , y › z, z › y p' = (0.7071 j + 0.7071 k) * p * (0.7071 j + 0.7071 k)
6 reflection in 45deg to x & z x › z , y › y, z › x p' = (0.7071 i + 0.7071 k) * p * (0.7071 i + 0.7071 k)
7 reflection in -45deg to x & y x › y , y › -x, z › z p' = (0.7071 i - 0.7071 j) * p * (0.7071 i - 0.7071 j)
8 reflection in -45deg to y & z x › x , y › z, z › -y p' = (0.7071 j - 0.7071 k) * p * (0.7071 j - 0.7071 k)
9 reflection in -45deg to x & z x › z , y › y, z › -x p' = (0.7071 i - 0.7071 k) * p * (0.7071 i - 0.7071 k)
7 rotation of 180 degrees about the z axis x › -x , y › -y, z › z p' = i * j * p * j * i
p' = k * p *-k
8 rotation of 180 degrees about the y axis x › -x , y › y, z › -z p' = i * k * p * k * i
p' = j * p *-j
9 rotation of 180 degrees about the x axis x › x , y › -y, z › -z p' = j * k * p * k * j
p' = i * p *-i
7 reflection through origin point x › -x , y › -y, z › -z

p' = i * j * k * p * k * j * i
p' = k * k * p * k *-k
p' = -1 * p * 1


metadata block
see also:

 

Correspondence about this page

Book Shop - Further reading.

Where I can, I have put links to Amazon for books that are relevant to the subject, click on the appropriate country flag to get more details of the book or to buy it from them.

 

cover us uk de jp fr ca Quaternions and Rotation Sequences.

Commercial Software Shop

Where I can, I have put links to Amazon for commercial software, not directly related to the software project, but related to the subject being discussed, click on the appropriate country flag to get more details of the software or to buy it from them.

 

cover Dark Basic Professional Edition - It is better to get this professional edition

cover This is a version of basic designed for building games, for example to rotate a cube you might do the following:
make object cube 1,100
for x=1 to 360
rotate object 1,x,x,0
next x

cover Game Programming with Darkbasic - book for above software

Can you help?

Please send me any improvements to here. I would appreciate ideas to make the pages more useful including error correction, ideas for new pages, improvements to wording. It helps if you quote the full URL of the page.

 

Terminology and Notation

Specific to this page here:

 

program

I am working on a project which uses these principles, if you would like to help me with this you are welcome to join in, here:

http://sourceforge.net/projects/mjbworld/

This site may have errors. Don't use for critical systems.

Copyright (c) 1998-2008 Martin John Baker - All rights reserved.