0

所以这是我的场景:我有一个宇宙飞船游戏,每艘宇宙飞船都可以瞄准另一艘飞船并发射鱼雷,而鱼雷需要一个方向矢量才能行进,矢量需要与距离无关。

我正在寻找创建一个返回这样D3DXVECTOR3构造的方法:

D3DXVECTOR3 TargetVector(D3DXVECTOR3 *target, D3DXVECTOR3 *firer)

有没有人有这方面的经验?如果有人能向我指出任何体面的、易于理解的 D3D 数学教程,那就太好了,因为到目前为止我所发现的都是基于渲染图像而不是数学方程。

谢谢!

-瑞安

4

1 回答 1

2

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

direction = target - firer;

D3DX 库中有D3DXVec3Subtract

如果你想要一个单位法线,它是一个长度为 1 的向量,然后使用D3DXVec3Normalize 对其进行归一化。

所以你将拥有:

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

    D3DXVec3Normalize(&direction, &direction);
    return direction;
}
于 2013-04-11T15:47:04.917 回答