How to convert from Euler's coordinates E1 = (x1, y1, z1, yaw1, pitch1, roll1) to E2 = (x2, y2, z2, yaw2, pitch2, roll2) where x, y, z are the coordinates of a point and yaw, pitch, roll the direction/orientation of a vector which origin is the point. yaw is around y, pitch around x, roll around z. They are performed in that order. Yaw 0 is normal to the plan xy (opposite to z in E1 and equal to z in E2).
E1 uses a right handed space and E2 a left handed space. Both have the same origin, the same direction for y (top) and z (into the screen). They differ by x which is to the left on E1 and to the right on E2. They also differ by their direction of positive rotations.
I've a custom type to hold the scalar 开发者_开发百科representation and to convert from and to the equivalent WPF Matrix3d representation.
In the end this solution works for me:
Point6DoF right = new Point6DoF(
-left.X, left.Y, left.Z,-left.Yaw, left.Pitch, -left.Roll)
where Point6DoF is the class that holds the position and Euler's angles.
精彩评论