0

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

4

2 回答 2

1

在某些时候,您可能会采用“旋转 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;
}
于 2013-02-28T16:04:03.477 回答
0

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

四元数结构 (MSDN)

Quarternion 教程(MSDN 社交)

XNA 中的四元数旋转(Stackoverflow 问题)

于 2013-02-28T16:20:32.397 回答