如何改变坐标的惯用手?

发布于 2024-08-31 09:08:03 字数 372 浏览 4 评论 0原文

如何从欧拉坐标转换 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

允世 2024-09-07 09:08:03

最后这个解决方案对我有用:

Point6DoF right = new Point6DoF(
    -left.X, left.Y, left.Z,-left.Yaw, left.Pitch, -left.Roll)

其中 Point6DoF 是保存位置和欧拉角度的类。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文