3d 如何检查四元数是否从标高旋转超过定义的角度

3d 如何检查四元数是否从标高旋转超过定义的角度,3d,quaternions,euler-angles,3d,Quaternions,Euler Angles,我有一个四元数q,我需要确定它是否在X/Y轴上旋转超过某个水平度。任何简单的捷径显然都是将quat转换为x/y/z Euler角度,然后将x/x值与角度限制进行比较,但我想知道是否有更干净的方法来实现这一点 更好的解决方案应该是找到四元数和单位数之间的精确角度 我不知道您使用哪种四元数实现,其中许多都有一些辅助方法来计算这些东西。如果您的实现不支持这一点,您可以查看答案以获得帮助。看看swing twist分解,它将旋转拆分为两个组件 将旋转分解为两个部分。 1.扭曲-围绕方向向量旋转 2.Sw

我有一个四元数q,我需要确定它是否在X/Y轴上旋转超过某个水平度。任何简单的捷径显然都是将quat转换为x/y/z Euler角度,然后将x/x值与角度限制进行比较,但我想知道是否有更干净的方法来实现这一点

更好的解决方案应该是找到四元数和单位数之间的精确角度


我不知道您使用哪种四元数实现,其中许多都有一些辅助方法来计算这些东西。如果您的实现不支持这一点,您可以查看答案以获得帮助。

看看swing twist分解,它将旋转拆分为两个组件

将旋转分解为两个部分。 1.扭曲-围绕方向向量旋转 2.Swing-绕垂直于方向向量的轴旋转 旋转可以由以下内容组成: 旋转=摆动*扭转