math - 通过另一四元数的偏航角部分校正四元数的偏航角部分

标签 math angle quaternions euler-angles

我有以下问题:来自运动捕获设备的四元数(q1)需要通过第二个被跟踪物体派生的另一个方位四元数(q2)的偏航角(且仅偏航!)进行校正,从而使俯仰和滚动q1的偏向与以前相同,但q1偏向q2。

工作解决方案是将quat转换为矩阵,然后进行计算以提取旋转角度,然后进行航向校正。但这直接在特定轴的方向上(例如在0°至359°之后)会导致“翻转”。还尝试了其他不方便的转换。

是否有可能直接在四元数上进行数学运算而无需转换为矩阵或欧拉角(即,因此我可以将校正后的四元数设置为被跟踪对象的四元数)?

如前所述-校正应仅包括围绕上轴的旋转(偏航)。关于数学类,我编程的可能性不多(不幸的是,Virtools的VSL脚本在这个方向上非常有限)。有人有什么建议吗?

最佳答案

对于此任务,欧拉角是最好的选择,因为它们的优点(根本是唯一的优点)在于围绕正交轴分成单独的旋转。因此,将两个四元数都转换为适合您需求的欧拉角惯例,只需将q1的偏航角替换为q2的偏航角即可。

当然,您需要使用匹配的欧拉角惯例,其中其他旋转不取决于偏航角(因此在变换点时首先应用偏航旋转吗?),以便您可以更改角度而不会影响其他轴。将生成的欧拉角三倍角转换回四元数时,您应该再次获得唯一的表示形式,否则我会丢失某些东西吗?

关于math - 通过另一四元数的偏航角部分校正四元数的偏航角部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6176205/

相关文章:

math - 条件表达式以外的其他三元运算

PHP/在表格行中保存数学公式

java - 计算角度的标准偏差?

quaternions - 计算四元数逆

rotation - 四元数绕轴旋转的分量

python - 手动计算 AIC 编号给定数据分布和一些分布字符串

c++ - 将角度转换为 vector 并返回改变角度?

r - 将笛卡尔角转换为 R 中的极角/罗盘角/基数角?

algorithm - 确定将一个向量发送到另一个向量的四元数

javascript - 解析解三次方程的函数