Xna得到正确的方向3d

本文关键字:方向 3d Xna | 更新日期: 2023-09-27 18:01:30

如果我有一个起始位置vector3和旋转矢量vector3,我如何得到指示行进方向的矢量?我得到一个标准化的向量来表示它是如何旋转的,但当然这只表示它是如何旋转的,而不是运动的方向。也就是说,如果我在y轴上旋转会影响x轴和z轴的运动方向而不是对一个在y轴上旋转的向量进行归一化这就表明它在y轴上旋转了

Xna得到正确的方向3d

在某些情况下,你可能会使用'rotation Vector3'并从中制作一个矩阵。该矩阵有一个Vector3属性(Matrix.Forward),它是与'旋转Vector3'相对应的方向。如果你不想打乱已有的矩阵,这个方法就可以了。

Vector3 DirectionToTravel(bool rotationVecIsInRadians, Vector3 rotationVec)//rotation vec must not be normalized at this point
{
    Vector3 result;
    if (!rotationVecIsInRadians)
    {
        rotationVec *= MathHelper.Pi / 180f;
    }
    float angle = rotationVec.Length();
    rotationVec /= angle; //normalizes rotation vec
    result = Matrix.CreateFromAxisAngle(rotationVec, angle).Forward;
    return result;
}

除了Steve H的答案之外,您可能会发现您需要使用Quarternions在3D空间中更有效地进行旋转。我提供了一些链接,如果你决定使用Quarternions,可能会对你有所帮助。

四分位数结构(MSDN)

季刊教程(MSDN Social)

季度轮换在XNA (Stackoverflow问题)