这是我的场景:我有一个宇宙飞船游戏,每艘宇宙飞船都可以瞄准另一艘船并发射鱼雷,而鱼雷需要一个方向 vector 来移动,该 vector 需要与距离无关。
我想创建一个返回 D3DXVECTOR3
的方法,构造如下:
D3DXVECTOR3 TargetVector(D3DXVECTOR3 *target, D3DXVECTOR3 *firer)
有没有人有这方面的经验?如果有人甚至可以向我指出任何体面的、易于理解的 D3D 数学教程,那就太好了,因为到目前为止我发现的所有内容都是基于渲染图像而不是数学方程式。
谢谢!
-瑞安
最佳答案
如果您想要一个从 firer
开始并指向 target
的方向 vector ,只需从 target
中减去 firer
即:
direction = target - firer;
有D3DXVec3Subtract在 D3DX 库中。
如果你想要一个单位法线,它是一个长度为 1 的 vector ,然后用 D3DXVec3Normalize 对其进行归一化。 .
所以你将拥有:
D3DXVECTOR3 TargetVector(D3DXVECTOR3 *target, D3DXVECTOR3 *firer)
{
D3DXVECTOR3 direction;
D3DXVec3Subtract(&direction, target, firer);
D3DXVec3Normalize(&direction, &direction);
return direction;
}
关于c++ - 计算 2 D3DXVECTOR3 与距离无关的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15953166/