C++ 计算两个D3DXVECTOR3之间的矢量,该矢量与距离无关

C++ 计算两个D3DXVECTOR3之间的矢量,该矢量与距离无关,c++,math,directx-9,direction,d3dx,C++,Math,Directx 9,Direction,D3dx,这是我的场景:我有一个宇宙飞船游戏,每艘宇宙飞船可以瞄准另一艘飞船并发射鱼雷,鱼雷需要一个方向向量来行进,这个向量需要独立于距离 我希望创建一个方法,返回一个D3DXVECTOR3,构造如下: D3DXVECTOR3 TargetVector(D3DXVECTOR3*目标,D3DXVECTOR3*火焰) 有人有这方面的经验吗?如果有人能给我指点任何像样的、容易理解的D3D数学教程,那就太好了,因为到目前为止,我所发现的都是基于渲染图像而不是数学方程 谢谢 -Ryan如果您想要一个从firer开始

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

我希望创建一个方法,返回一个
D3DXVECTOR3
,构造如下:

D3DXVECTOR3 TargetVector(D3DXVECTOR3*目标,D3DXVECTOR3*火焰)

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

谢谢


-Ryan

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

direction = target - firer;
在D3DX库中没有它的名称

如果你想有一个单位法线,这是一个长度为1的向量,然后用归一化

因此,您将有:

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

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

没有在目标和火力上使用“&”,标准化将允许我翻译鱼雷,如:“鱼雷[i].posVec3+=(鱼雷[i].directionVec*鱼雷[i].speed);”对吗?是的,假设
directionVec
有正确的运算符与标量相乘。directionVec是D3DXVECTOR3,所以我猜这是否定的?还有如何在注释中使用代码突出显示?它已经困扰了我一段时间了,现在只需在单词周围使用“引用”。D3DX中可能有一种方法可以将向量和标量相乘。考虑移动,而不是继续使用遗留的D3DX数学库。如果尚未使用Windows 8.x SDK,也可以使用。