如何改变坐标的惯用手?
如何从欧拉坐标转换 E1 = (x1, y1, z1, 偏航 1, 俯仰 1, 横滚 1) 至 E2 = (x2, y2, z2, 偏航 2, 俯仰 2, 横滚 2) 其中 x、y、z 是点的坐标 偏航、俯仰、滚动是以原点为向量的方向/方向。 偏航绕 y,俯仰绕 x,滚转绕 z。它们按该顺序执行。偏航 0 垂直于平面 xy(与 E1 中的 z 相反并等于 E2 中的 z)。
E1 使用右手空间,E2 使用左手空间。 两者具有相同的原点,y(顶部)和 z(进入屏幕)的方向相同。 它们的区别在于 x,x 在 E1 上位于左侧,在 E2 上位于右侧。 它们的正旋转方向也有所不同。
我有一个自定义类型来保存标量表示形式并在等效的 WPF Matrix3d 表示形式之间进行转换。
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.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
最后这个解决方案对我有用:
其中 Point6DoF 是保存位置和欧拉角度的类。
In the end this solution works for me:
where Point6DoF is the class that holds the position and Euler's angles.