计算2 D3DXVECTOR3之间的矢量,与距离无关

时间:2013-04-11 15:43:01

标签: c++ math directx-9 direction d3dx

所以这是我的场景:我有一个宇宙飞船游戏,每个宇宙飞船可以瞄准另一艘船并发射鱼雷,鱼雷需要一个方向矢量来传播,矢量需要独立于距离。

我正在寻找一个方法,它返回一个像这样构造的D3DXVECTOR3

D3DXVECTOR3 TargetVector(D3DXVECTOR3 *target, D3DXVECTOR3 *firer)

有没有人有过这方面的经验?如果有人能指向任何体面的,易于理解的D3D数学教程,那将是很棒的,因为到目前为止,我所发现的只是基于渲染图像而不是数学方程式。

谢谢!

-Ryan

1 个答案:

答案 0 :(得分:2)

如果您想要一个从firer开始并指向target的方向向量,只需从firer中减去target,即:

direction = target - firer;

D3DX lib中有D3DXVec3Subtract

如果你想要一个单位法线,这是一个长度为1的向量,那么用D3DXVec3Normalize将其标准化。

所以你会:

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

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