使用四元数旋转3D欧拉点以避免万向架锁定
||
首先,我已经进行了大量的谷歌搜索,并检查了有关此问题的其他stackoverflow帖子,但是无法获得有效的答复或工作代码段。数学不是我的强项。
我需要一个例程,该例程需要一个摄影点(CX,CY,CZ),并将其绕着视点(LX,LY,LZ)旋转三个旋转角度(RX,RY,RZ)。在某些情况下,使用欧拉旋转会导致云台锁定,这是我需要避免的。所以我听说使用四元数。
我发现这可以将旋转转换为四元数
http://www.euclideanspace.com/maths/geometry/rotations/conversions/eulerToQuaternion/index.htm
并将其从四元数转换回欧拉XYZ旋转
http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToEuler/index.htm
它们似乎工作正常,但是我需要知道如何使用四元数围绕LX,LY,LZ旋转CX,CY,CZ,然后返回新的CX,CY,CZ,而不会出现万向节锁定问题。
关于这一点的内容太多了,以至于我相信良好的解释和代码段不仅会对我有帮助,而且将来对其他人也有帮助。
因此,如果可以的话,请提供帮助。非常感谢。
没有找到相关结果
已邀请:
1 个回复
翁茄口霉氖
其中点以Cw = 0增高,并且乘法和逆均根据四元数规则。 具体来说,让D = C-L。然后让F = Q * D:
最后,我们得到C \'= F * Q ^ -1 + L:
但是,请注意,如果您是根据Euler表示创建四元数,则最终仍将使用万向节锁定。云台锁定是欧拉表示的一个属性,四元数将只表示相同的变换。要摆脱万向节锁定,除非我误解了您的使用方式,否则您将需要完全避免使用Euler表示。