2010-09-14 89 views
2

有沒有辦法沿不同平面旋轉對象?我正在製作一個太陽系的3D模型,我想讓冥王星在與其他行星不同的平面上圍繞太陽旋轉。我目前擁有前8個繞xz平面圍繞太陽旋轉的行星(圍繞y軸旋轉)。有沒有一種簡單的方法來做到這一點,而不需要進入複雜的數學?這就是我實現了我的其他行星,DirectX沿不同平面旋轉

D3DXMATRIX marsMat; 
D3DXMATRIX marsScale; 
D3DXMATRIX marsTrans; 
D3DXMATRIX marsAxisRot; 
D3DXMATRIX marsRot; 

D3DXMatrixScaling(&marsScale,0.45,0.45,0.45); 
D3DXMatrixRotationY(&marsAxisRot,D3DXToRadian((GetTickCount()-start)*0.07)); 
D3DXMatrixTranslation(&marsTrans,-17,0,0); 
D3DXMatrixRotationY(&marsRot,D3DXToRadian((GetTickCount()-start)*0.007)); 

marsMat = marsScale * marsAxisRot * marsTrans * marsRot; 

matrixStack->Push(); 
{ 
    matrixStack->MultMatrixLocal(&marsMat); 
    d3ddev->SetTransform(D3DTS_WORLD,matrixStack->GetTop()); 
    marsMesh->DrawSubset(0); 
} 
matrixStack->Pop(); 

回答

1

D3DXMatrixRotationAxis是你想要的。

記住一個平面實際上是一個垂直於平面的矢量,它描述了D參數描述距離原點的距離。所以使用A,B和C參數來創建一個向量。將其歸一化並將其用作旋轉軸。然後你可以翻譯它,使它的起源是你太陽的任何位置(無論如何這可能是旋轉的起點)。

+0

乾杯隊友。奇蹟般有效。 – lightnin2211 2010-09-16 17:39:32