翻转一个四元数的一个轴(从右到左的coordinae系统)

时间:2017-08-08 14:54:08

标签: unity3d matrix transformation

有很多类似的问题,但我找不到答案=(。 我在右手坐标系中从传感器得到四元数。 然后我通过这个四元数在Unity中绘制一个对象。 Unity使用左手坐标系统。 如果我将传感器顺时针旋转一个轴,则一个轴将始终沿相反方向旋转=( 我已经阅读了很多书籍,文章,论坛帖子大约3周。我仍然找不到解决方案。

我测试了以下算法: 1.将四元数转换为矩阵 - >然后将矩阵转换为左手CS(determinaте将为-1) - >并转换回四元数 - 这不起作用。

转换矩阵(3x3)= 1 0 0 0 1 0 0 1 -1

新CS中的矩阵=(变换矩阵)(q_mat)(变换矩阵)

  1. 翻转四元数的两个组件也将保存右CS。它会翻转两个轴。
  2. 还有很多其他方法.... 请帮助=((

1 个答案:

答案 0 :(得分:1)

如果要将右手坐标转换为Unity的左手坐标,请使用以下函数:

private Quaternion rightCoordToUnityCord(Quaternion q)
{
    return new Quaternion(q.x, q.y, -q.z, -q.w);
}

它来自Unity的doc,我一直在使用它,因为我发现它。希望它能解决你的问题。