2

我正在制作太阳系的 3D 模拟

对于每个行星,我都有一个Celestial Body类的实例。我正在使用以下代码进行太阳、行星及其卫星的公转和自转。

world = Matrix.CreateTranslation(0,0,0) * Matrix.CreateRotationY(rotation) * Matrix.CreateTranslation(position) * Matrix.CreateRotationY(revolution); 
  • 旋转是我的浮动变量,用于行星绕自己的轴旋转
  • 革命是我的浮动变量,用于行星在轨道上的旋转
  • 位置是我的 vector3 变量,以将身体置于轨道上或距离中心的半径处,例如postion = new Vector3(70,0,0)

现在它工作得很好。

但问题是我需要找到\得到我的星球的位置,在矩阵乘法之后,它在x,y,x坐标中被翻译到哪里。

如何 ?获取我星球的当前 X , Y , Z 坐标

对我来说,另一个选择是使用一些数学公式为我计算二维圆。

4

1 回答 1

5

我想你要找的是Matrix.Translation. 这为您提供了在 a 中调用的矩阵的 x、y、z 坐标Vector3

因此,要获得新职位,您应该使用

Vector3 newPosition = world.Translation;

在你的计算之后。

于 2011-05-23T17:51:12.393 回答