2012-01-25 28 views
0

我正在翻譯一些代碼到JavaScript中。我試圖複製如何通過mat4轉換vec3?

D3DXVECTOR3* D3DXVec3TransformCoord(
__inout D3DXVECTOR3 *pOut, 
__in  const D3DXVECTOR3 *pV, 
__in  const D3DXMATRIX *pM 
); 

這適用於Mat4轉換到Vec3(這將導致無效mat4)。如何將4d矩陣投影到3d矩陣中並執行操作?你會以什麼順序做數學?我們可以假設,W = 1,如下面的帖子:

DirectX Math function confusion

+0

你真的在問如何通過向量來轉換矩陣嗎? –

+0

看這裏:http://www.gamedev.net/topic/11906-d3dxvec3transformcoord/ – GManNickG

+0

那麼,建立在c + +和D3DXVec3Transform和D3DXVec3TransformCoord之間,我只是想確定他們執行什麼確切的數學。你永遠不知道它是否比你期望的要稍微多一點,或者比你想象的少一點。該鏈接有幫助。現在我知道在哪裏可以找到內部。 – FlavorScape

回答

1

documentation這個功能說「由給定矩陣變換的3D矢量,投影結果轉化成W = 1」 。

換句話說,功能擴展向量[X,Y,Z][X,Y,Z,1],然後執行乘法,結果截斷到操作後三個要素。

編輯:根據this thread操作XA,即具有在左邊的行向量,這相當於齊次變換乘法:XM(0)+ y M的(1)+ ZM(2)+ M(3),其中M(i)是矩陣的第i列。

+0

這是正常的c + + Vec3 * Mat4相同嗎?我發現操作員正在使用,但我不知道它實際上在做什麼。 – FlavorScape

+0

Mathetically Vec3 * Mat4未定義,矢量長度必須與矩陣中的行數匹配。如果考慮到w = 1「投影」,則應該得到與Vec4 * Mat4例程相同的結果。 – 2012-01-27 10:00:55