所以这是我的场景:我有一个宇宙飞船游戏,每个宇宙飞船可以瞄准另一艘船并发射鱼雷,鱼雷需要一个方向矢量来传播,矢量需要独立于距离。
我正在寻找一个方法,它返回一个像这样构造的D3DXVECTOR3
:
D3DXVECTOR3 TargetVector(D3DXVECTOR3 *target, D3DXVECTOR3 *firer)
有没有人有过这方面的经验?如果有人能指向任何体面的,易于理解的D3D数学教程,那将是很棒的,因为到目前为止,我所发现的只是基于渲染图像而不是数学方程式。
谢谢!
-Ryan
答案 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;
}