C# XNA 矩阵 - 找出矩阵乘法后的当前位置

标签 c# matrix xna matrix-multiplication

我正在制作太阳系的 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/

相关文章:

c++ - 交换内部和外部 vector

android - 在 android 中缩放和拖动图像

c# - XNA Game Studio 在 2013 年过时了吗?

c# - Pacman Game Organization (XNA) - 我应该在哪里/如何检查与幽灵/食物的碰撞?

c# 解析 UTC 日期时间

c# - ASP.NET Core 中 Func<T> 类型的依赖注入(inject)

c# - 订购字段信息

matlab - 不使用 for 循环从 MATLAB 矩阵中提取数据

c# - 在每像素碰撞后控制玩家移动

c# - 我如何执行集成测试来测试急切加载的实体(EF4 Code First)