Improper rotations are coordinate transformations from a left handed into a right handed coordinate system as, e.g. a mirroring or an inversion. In MTEX the inversion is defined as the negative identical rotation
I = - rotation.byEuler(0,0,0)
I = rotation
Bunge Euler angles in degree
phi1 Phi phi2 Inv.
0 0 0 1
Note that this is convenient as both groupings of the operations -
and *
should give the same result
- (rotation.byEuler(0,0,0) * xvector)
(- rotation.byEuler(0,0,0)) * xvector
ans = vector3d
x y z
-1 0 0
ans = vector3d
x y z
-1 0 0
Mirroring
As a mirroring is nothing else than a rotation of 180 degree about the normal of the mirroring plane followed by a inversion, we can defined a mirroring about the axis (111) by
mir = -rotation.byAxisAngle(vector3d(1,1,1),180*degree)
mir = rotation
Bunge Euler angles in degree
phi1 Phi phi2 Inv.
135 109.471 45 1
A convenient shortcut is the command
mir = reflection(vector3d(1,1,1))
mir = rotation
Bunge Euler angles in degree
phi1 Phi phi2 Inv.
135 109.471 45 1
To check whether a rotation is improper or not you can do
mir.isImproper
ans =
logical
1