gpt4 book ai didi

java - OpenGL 旋转和物体移动

转载 作者:行者123 更新时间:2023-12-02 00:08:03 27 4
gpt4 key购买 nike

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

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

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

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

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

最佳答案

您可以通过创建转换组合来实现此目的。假设你想让一颗行星围绕一颗中心恒星运行。首先,行星进入轨道,即 x 方向的平移:

orbit_distance = translation_orbit · planet_center

然后绕中心旋转。

orbit_position = rotation_orbit · orbit_distance

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

orbit_position = rotation_orbit · translation_orbit · planet_center

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

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

围绕太阳旋转的行星的旋转月亮:

R_orbit_planet · T_orbit_planet · R_orbit_moon · T_orbit_moon · R_rotation_moon

关于java - OpenGL 旋转和物体移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13444111/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com