【发布时间】:2010-04-29 07:42:09
【问题描述】:
如何从欧拉坐标转换 E1 = (x1, y1, z1, yaw1, pitch1, roll1) 到 E2 = (x2, y2, z2, yaw2, pitch2, roll2) 其中 x, y, z 是一个点的坐标 和偏航,俯仰,滚动以原点为点的矢量的方向/方向。 yaw 围绕 y,pitch 围绕 x,roll 围绕 z。它们按该顺序执行。偏航 0 垂直于平面 xy(与 E1 中的 z 相反,等于 E2 中的 z)。
E1 使用右手空间,E2 使用左手空间。 两者具有相同的原点,y(顶部)和 z(进入屏幕)的方向相同。 它们的区别在于 x 位于 E1 的左侧和 E2 的右侧。 它们的正向旋转方向也不同。
我有一个自定义类型来保存标量表示并从和转换为等效的 WPF Matrix3d 表示。
【问题讨论】:
-
通常要将向量空间的任意基转换为另一个,您只需求解方程 ????₂ = ???? ⋅ ????₁ 在哪里 ????然后是从 ??????₁ 转换为 ????₂ 的变换矩阵。既然你知道你的基数(分别为 (1, 1, 1) 和 (-1, 1, 1)),这应该不会太难。
-
谢谢约翰内斯。我不是数学人,这对我来说不清楚。我随机尝试了一些组合。这似乎适用于使用自定义“Point6DoF”类型将左手转换为 WPF/右手空间,该类型包含 3D 点和 3D 观察方向:Point6DoF positionInRightHanded = new Point6DoF(-X, Y, Z ,-偏航,俯仰,-滚动)。这对你有意义吗?
标签: math 3d euler-angles