我正在制作太阳系的 3D 模拟
对于每个行星,我都有一个天体类的实例。我使用以下代码来实现太阳、行星及其卫星的公转和自转。
world = Matrix.CreateTranslation(0,0,0) * Matrix.CreateRotationY(rotation) * Matrix.CreateTranslation(position) * Matrix.CreateRotationY(revolution);
- rotation 是我的浮点变量,用于行星绕其自身轴旋转
- 革命是我的浮点变量,表示行星在轨道上的革命
- position 是我的 vector3 变量,用于将物体置于轨道上或其中心半径处,例如
position = new Vector3(70,0,0)
现在效果非常好。
但问题是我需要定位\获取我的星球的位置,在矩阵乘法之后按字面意思翻译成 x,y,x 坐标。
如何?获取我的星球当前的 X、Y、Z 坐标
对我来说,另一个选择是使用一些数学公式来计算 2D 圆。
最佳答案
我认为您正在寻找的是Matrix.Translation
。这将为您提供在 Vector3
中调用的矩阵的 x、y、z 坐标。
因此,要获得新位置,您应该使用
Vector3 newPosition = world.Translation;
经过计算。
关于C# XNA 矩阵 - 找出矩阵乘法后的当前位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6100827/