Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
DirectX沿不同平面的旋转_Directx - Fatal编程技术网

DirectX沿不同平面的旋转

DirectX沿不同平面的旋转,directx,Directx,有没有办法沿不同的平面旋转对象?我正在制作一个太阳系的3D模型,我想让冥王星在与其他行星不同的平面上围绕太阳旋转。我现在有前八颗行星在xz平面上围绕太阳旋转(绕y轴旋转)。有没有一个简单的方法可以做到这一点,而不必陷入复杂的数学?这就是我如何实现我的其他星球 D3DXMATRIX marsMat; D3DXMATRIX marsScale; D3DXMATRIX marsTrans; D3DXMATRIX marsAxisRot; D3DXMATRIX marsRot; D3DXMatrixS

有没有办法沿不同的平面旋转对象?我正在制作一个太阳系的3D模型,我想让冥王星在与其他行星不同的平面上围绕太阳旋转。我现在有前八颗行星在xz平面上围绕太阳旋转(绕y轴旋转)。有没有一个简单的方法可以做到这一点,而不必陷入复杂的数学?这就是我如何实现我的其他星球

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();
这就是你想要的


请记住,平面实际上是一个向量,垂直于它所描述的平面,其中D参数描述了与原点的距离。因此,使用A、B和C参数创建一个向量。将其法线化并将其用作旋转轴。然后你可以将其平移,使其原点与太阳的位置一致(无论如何,这可能是旋转的原点)。

干杯,伙计。工作起来很有魅力。