C#XNA矩阵 - 在矩阵乘法后找出当前的locatin

Moo*_*oon 2 c# xna matrix matrix-multiplication

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

对于每个星球,我都有一个类天体的实例.我使用以下代码进行太阳,行星及其卫星的旋转和旋转.

world = Matrix.CreateTranslation(0,0,0) * Matrix.CreateRotationY(rotation) * Matrix.CreateTranslation(position) * Matrix.CreateRotationY(revolution); 
Run Code Online (Sandbox Code Playgroud)
  • rotation是我的float变量,用于围绕自己的轴旋转行星
  • 革命是我在轨道上行星革命的浮动变量
  • 位置是我的vector3变量,将身体置于轨道或其中心位置,例如 postion = new Vector3(70,0,0)

现在它工作得很好.

但问题是我需要找到\获取我的行星的位置,在矩阵乘法字面意义上的x,y,x坐标之后的位置.

如何 ?得到我星球的当前X,Y,Z坐标

对我来说,另一个选择是使用一些为我计算2D圆的数学公式.

fir*_*gle 5

我想你要找的是Matrix.Translation.这将为您提供在a中调用的矩阵的x,y,z共同作用Vector3.

所以,要获得新职位,你应该使用

Vector3 newPosition = world.Translation;
Run Code Online (Sandbox Code Playgroud)

经过你的计算.