2013-04-11 49 views
0

因此,这是我的场景:我有一个太空飞船游戏,每个飞船可以瞄准另一艘船并且发射鱼雷,并且鱼雷需要一个方向向量来旅行,向量需要独立于距离。计算独立于距离的2 D3DXVECTOR3之间的向量

我希望创建一个返回像这样一个D3DXVECTOR3构建的方法:

D3DXVECTOR3 TargetVector(D3DXVECTOR3 *target, D3DXVECTOR3 *firer)

在此事上没有人有经验吗?如果任何人甚至可以指向我任何体面的,易于理解的D3D数学教程,那将是非常好的,因为迄今为止我发现的所有教程都基于渲染图像而不是数学方程式。

谢谢!

-Ryan

回答

2

如果你想从firer和点target开始方向矢量只是减去firertarget即:

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; 
} 
+0

内置无目标和射手的“&”,和正常化将使我翻译像鱼雷:“鱼雷[I] .posVec3 + =(鱼雷[ i] .directionVec * torpedo [i] .speed); ' 对? – TotalJargon 2013-04-11 15:59:46

+0

是的,假设'directionVec'有合适的运算符与标量相乘。 – 2013-04-11 16:00:58

+0

directionVec是一个D3DXVECTOR3,所以我猜这是一个禁忌?另外如何在评论中使用代码突出显示?它一直在窃听我一段时间现在xD – TotalJargon 2013-04-11 16:03:50