【发布时间】:2013-11-14 22:53:43
【问题描述】:
我如何进入绿色环绕橙色和蓝色环绕绿色的轨道?
我找到了许多解决方案,可以很好地围绕静态点旋转(在这种情况下是橙色圆圈),但没有找到任何适用于静态点和移动点的好的数学方程。
angle += sunRot;
if(angle > 360.0f)
{
angle = 0.0f;
}
float radian = glm::radians(angle);
float radius = glm::distance(position, rotCenter);
float x = rotCenter.x + (radius * cosf(radian));
float z = rotCenter.z + (radius * sinf(radian));
glm::vec3 newPos = glm::vec3(x, 0, z);
setPosition(newPos);
Here is 我正在努力实现的目标(感谢@George Profenza 分享链接)
【问题讨论】:
-
您需要做的就是以正确的顺序转换每个对象。您将首先围绕橙色对象旋转绿色对象以获取其位置。然后使用绿色对象的位置并围绕它旋转蓝色对象。它们具有完美的圆形轨道,因此您可以将它们平移到距它们所环绕的物体中心的固定距离处。
-
你需要什么like this吗?
-
@peter-wood ,不,我只是尝试模拟地球绕太阳旋转和月亮绕地球旋转。
标签: c++ opengl math rotation coordinates