0

我正在尝试创建一个非常基本的行星运动(太阳,地球月亮表示为立方体)。

至于现在我设法围绕另一个立方体移动一个立方体,但我有以下问题......将另一个立方体(例如月亮)移动到一个已经移动的立方体周围的最佳方法是什么?

我使用简单的操作让它们运动起来。在 x 轴上移动:

d * Math.sin(x * Math.PI / 180.0)

其中 d 是距中心或投影的距离(不知道我是否正确使用了这个术语)。我想过通过计算已经旋转的立方体的距离并添加一些参数来放置“卫星”,但不知道如何使该行星成为旋转中心的“参考”......

4

1 回答 1

3

您可以通过创建转换组合来做到这一点。假设你想围绕一颗中心恒星运行一颗行星。首先,行星被移入轨道,平移,例如 x 方向:

orbit_distance = translation_orbit · planet_center

然后围绕中心旋转。

orbit_position = rotation_orbit · orbit_distance

或者,您可以将其写在一行中

orbit_position = rotation_orbit · translation_orbit · planet_center

重要的是,操作顺序很重要,先旋转后平移与先平移后旋转不同。或者,用数学术语来说,几何变换不是可交换的。

在 3 维空间中,所有线性变换都可以通过 4 维齐次坐标集中的线性方程来描述。即你可以使用 4×4 矩阵来表达各种线性几何变换。

围绕围绕太阳运行的行星的自转月亮:

R_orbit_planet · T_orbit_planet · R_orbit_moon · T_orbit_moon · R_rotation_moon
于 2012-11-18T20:23:01.273 回答