是否可以在不使用四元数的情况下设置矩阵的z-旋转?

时间:2017-10-08 14:14:59

标签: matrix linear-algebra

我想用鼠标旋转我的3D相机。

由于我不能使用四元数来看看没有万向节锁定的功能,所以我改为旋转正确的&分别为轴。

然而,这使得矩阵沿着它的前轴旋转,这是我不想要的行为。

为了防止这种情况,我尝试制作一个将右轴的y值设置为0的函数,但是我的尝试只会导致矩阵在进一步旋转时变得更加模糊。

所以我的问题是,是否可以这样做? 我使用左手矩阵,其中x是正确的,y是up& z是前锋。

这是C ++中的一个例子,所以你可以看到我的目标:

void RemoveZRotation(Matrix44& matrix)
{
    Vector3 right = matrix.GetRight();
    right.y = 0;
    right.Normalize();

    Vector3 up = right.Cross(matrix.GetForward());
    up.Normalize();

    matrix[0] = right.x;
    matrix[1] = right.y;
    matrix[2] = right.z;

    matrix[4] = up.x;
    matrix[5] = up.y;
    matrix[6] = up.z;
}

0 个答案:

没有答案