我相信这很简单,但是在研究和寻找成功答案方面一直没有成功。
我将三个欧拉角定义为XYZ顺序的右手坐标系。
我必须转换为左手坐标系的欧拉XYZ。 如何调整这些角度以符合左手坐标系?
此外,如果有人有任何样本,那么我可以确保正确执行,例如90 -45 160或90 40 30会变成什么。
我相信这很简单,但是在研究和寻找成功答案方面一直没有成功。
我将三个欧拉角定义为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
可以使用几何代数来进行转换。它与四元数有些相似,但旋转发生在“定向平面”而不是“围绕轴”的情况下。
定向平面由两个向量的叉积定义为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