所以这是我的情况:我有一个太空飞船游戏,每个太空飞船都可以瞄准另一艘船并发射鱼雷,并且鱼雷需要沿着方向传播,该向量必须与距离无关。

我正在寻找一种创建返回D3DXVECTOR3的方法,如下所示:

D3DXVECTOR3 TargetVector(D3DXVECTOR3 *target, D3DXVECTOR3 *firer)

有人在这件事上有经验吗?如果有人甚至可以将我引向任何体面,易于理解的D3D数学教程,那就太好了,因为到目前为止,我发现的所有内容都是基于渲染图像而不是数学方程式的。

谢谢!

-瑞安

最佳答案

如果要从firer开始并指向target的方向矢量,只需从firer减去target即:

direction = target - firer;


D3DX库中有D3DXVec3Subtract

如果要使用单位法线,即单位长度为1的向量,请使用D3DXVec3Normalize将其标准化。

因此,您将拥有:

D3DXVECTOR3 TargetVector(D3DXVECTOR3 *target, D3DXVECTOR3 *firer)
{
    D3DXVECTOR3 direction;
    D3DXVec3Subtract(&direction, target, firer);

    D3DXVec3Normalize(&direction, &direction);
    return direction;
}

09-06 23:01