2013-04-11 48 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