5

I'm sure this is simple, but have not had any success researching this and getting a successful answer.

I have rotations defined as three euler angles, in XYZ order, right-handed.

I have to convert to a left-handed system of Euler XYZ. How do I adjust these angles to be correct for a left-handed system?

Also if anyone has any samples, so I can ensure doing it right, such as what does 90 -45 160 or 90 40 30 go to.

Mary Ellen Bench
  • 589
  • 1
  • 8
  • 28
  • Wikipedia should be a reliable source https://en.wikipedia.org/wiki/Euler_angles –  Jul 03 '15 at 09:39
  • The concept of "right/left-handed" does not define a specific coordinate system. It's only a property of such a system. For your question you need to specify transformation beetwen two systems, i.e. how do you calculate point coordinates x',y',z' from x,y,z ? – mufnull Jul 03 '15 at 10:47
  • For Left handed, X right, Y up, Z forward, for right handed, I have X right, Y up, Z away. – Mary Ellen Bench Jul 03 '15 at 15:31

1 Answers1

23

Notation:

x,y,z - old system basis
x',y',z' - new system basis

Transformation between systems:
x' = x
y' = y
z' = -z

Euler angles:
EulerXYZ = (alfa,beta,gamma)
EulerXYZ' = (alfa',beta',gamma') = ?

Now I can think of two ways to solve it:

Graphically

  1. Draw both systems
  2. Mark positive rotation on the right-handed one using right-hand rule
  3. Mark positive rotation on the left-handed one using left-hand rule
  4. When the rotation on corresponding axes agree then conversion is angle' = angle otherwise is angle' = -angle

right and left handes system with positive rotation marked

In the picture above #1 is right-handed and #2 is left-handed system (the red line always passes over the black line).

Looking at the picture we can conclude that alfa',beta',gamma' = -alfa,-beta,+gamma

Algebraically

Conversion can be calculated using geometric algebra. It is somehow similar to quaternions but rotation takes place "in oriented plane" instead of "around axis".

Oriented plane is defined by product of two vectors u^v and have following property: -(u^v) = (-u)^v = u^(-v)

Rotation is defined by rotor R(angle, plane) and R(angle, -plane) = R(-angle, plane)

Now:

R(alfa, y^z) = R(-alfa, -(y^z)) = R(-alfa, y^(-z)) = R(-alfa, y'^z')
R(beta, x^z) = R(-beta, x'^z')
R(gamma, x^y) = R(+gamma, x'^y')

so

alfa',beta',gamma' = -alfa,-beta,+gamma
mufnull
  • 321
  • 2
  • 7
  • I feel like this is an under appreciated gem of an answer. – Jared Jun 15 '20 at 14:56
  • Just want to be clear, are we talking about extrinsic rotation? – vicky Lin Sep 17 '21 at 09:17
  • @vickyLin It works for both intrinsic and extrinsic rotation. – mufnull Sep 19 '21 at 15:28
  • But intrinsic rotation will change rotation axis when doing rotation. How does it make sense according to "solve it **Graphically**"? – vicky Lin Sep 22 '21 at 06:50
  • 1
    @vickyLin We are not applying rotation. This question is about converting angles between two coordinate systems. Those angles can describe different intrinsic or extrinsic rotations. The proper conversion ensures that the effect of some particular rotation will be the same in both coordinate systems. – mufnull Sep 23 '21 at 17:59
  • This answer is simply perfect. Ty – Darkwonder Apr 22 '22 at 07:16