右手欧拉角 XYZ 到左手欧拉角 XYZ
Right-Handed Euler Angles XYZ to Left-Handed Euler Angles XYZ
我敢肯定这很简单,但尚未成功研究并获得成功的答案。
我将旋转定义为三个欧拉角,按 XYZ 顺序,右手旋转。
我必须转换为欧拉 XYZ 左手系。如何调整这些角度以适合左手系统?
此外,如果有人有任何示例,那么我可以确保正确执行,例如 90 -45 160 或 90 40 30 去哪里。
符号:
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') = ?
现在我想到了两种解决方法:
图形化
- 绘制两个系统
- 使用右手定则在右撇子上标记正旋转
- 使用左手定则在左撇子上标记正旋转
- 当相应轴上的旋转一致则转换为
angle' = angle
否则为angle' = -angle
上图中#1
为右手系,#2
为左手系(红线始终越过黑线)
看图片我们可以得出结论
alfa',beta',gamma' = -alfa,-beta,+gamma
代数
可以使用几何代数计算转换。它有点类似于
四元数,但旋转发生 "in oriented plane" 而不是 "around axis"。
定向平面由两个向量的乘积定义 u^v
并具有以下 属性:-(u^v) = (-u)^v = u^(-v)
旋转由转子 R(angle, plane)
和 R(angle, -plane) = R(-angle, plane)
定义
现在:
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')
所以
alfa',beta',gamma' = -alfa,-beta,+gamma
我敢肯定这很简单,但尚未成功研究并获得成功的答案。
我将旋转定义为三个欧拉角,按 XYZ 顺序,右手旋转。
我必须转换为欧拉 XYZ 左手系。如何调整这些角度以适合左手系统?
此外,如果有人有任何示例,那么我可以确保正确执行,例如 90 -45 160 或 90 40 30 去哪里。
符号:
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') = ?
现在我想到了两种解决方法:
图形化
- 绘制两个系统
- 使用右手定则在右撇子上标记正旋转
- 使用左手定则在左撇子上标记正旋转
- 当相应轴上的旋转一致则转换为
angle' = angle
否则为angle' = -angle
上图中#1
为右手系,#2
为左手系(红线始终越过黑线)
看图片我们可以得出结论
alfa',beta',gamma' = -alfa,-beta,+gamma
代数
可以使用几何代数计算转换。它有点类似于 四元数,但旋转发生 "in oriented plane" 而不是 "around axis"。
定向平面由两个向量的乘积定义 u^v
并具有以下 属性:-(u^v) = (-u)^v = u^(-v)
旋转由转子 R(angle, plane)
和 R(angle, -plane) = R(-angle, plane)
现在:
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')
所以
alfa',beta',gamma' = -alfa,-beta,+gamma