xna得到正确的方向3d

时间:2013-02-28 14:45:27

标签: c# xna

如果我有一个起始位置vector3和旋转矢量3,如何获得指示行进方向的矢量?我得到一个标准化的矢量来指示它是如何旋转的,但当然只表示它是如何旋转而不是行进方向。即如果我在y上旋转应该影响x和z上的行进方向,而不是在y上旋转矢量的规范,那将表明它已经在y上旋转。

2 个答案:

答案 0 :(得分:1)

在某些时候你可能会采用'旋转Vector3'并从中制作一个矩阵。该Matrix具有Vector3属性(Matrix.Forward),该属性是与'rotation 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;
}

答案 1 :(得分:0)

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

Quarternion Structure (MSDN)

Quarternion Tutorial (MSDN Social)

Quarternion Rotation in XNA (Stackoverflow Question)