2010-09-14 13 views
2

Existe-t-il un moyen de faire pivoter un objet sur un plan différent? Je fais un modèle 3D du système solaire, et j'aimerais que Pluton tourne autour du soleil sur un plan différent de celui des autres planètes. J'ai actuellement les huit premières planètes tournant autour du soleil dans le plan xz (rotation autour de l'axe y). Existe-t-il un moyen facile de le faire sans entrer dans des calculs complexes? Voilà comment j'ai mis mes autres planètes,Rotation DirectX le long d'un plan différent

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(); 

Répondre

1

D3DXMatrixRotationAxis est ce que vous voulez. Rappelez-vous qu'un plan est en fait un vecteur perpendiculaire au plan qu'il décrit, où le paramètre D décrit la distance à partir de l'origine. Utilisez donc les paramètres A, B et C pour créer un vecteur. Normalisez-le et utilisez-le comme axe de rotation. Vous pouvez alors le traduire de telle sorte que son origine soit quelque soit l'emplacement de votre soleil (ce qui pourrait bien être le point d'origine de la rotation de toute façon).

+0

Cheers mate. Fonctionne comme un charme. – lightnin2211