Search code examples
3drotationgeometrycoordinate-systemseuler-angles

Right-Handed Euler Angles XYZ to Left-Handed Euler Angles XYZ


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.


Solution

  • 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