c++ - 计算 2 D3DXVECTOR3 与距离无关的 vector

标签 c++ math directx-9 direction d3dx

这是我的场景:我有一个宇宙飞船游戏,每艘宇宙飞船都可以瞄准另一艘船并发射鱼雷,而鱼雷需要一个方向 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/

相关文章:

c++在添加两个绝对(正)值时得到负值

c++ - std::mutex 公平吗?

ios - 在 iOS 中实现 cantor 配对功能

java - 如何在apache FFT中使用复系数

c++ - 创建没有 HWND 输入参数的 D3D 设备到 MSFT CreateDevice() 函数

c++ - 使用 ID3DXEffect->SetTexture 取消绑定(bind)纹理

c++ - 使用 IDirect3DTexture9::LockRect 时出现 ACCESS_VIOLATION 异常 (0xC0000005)

c++ - Qt 从 QHBoxLayout 中删除拉伸(stretch)

c++ - 使用 boost ptr_unordered_map

python - Python中的连续互信息