【发布时间】:2015-10-11 14:11:17
【问题描述】:
使用 C++ 和 SFML。我有三个实体。我们称它们为太阳、地球和月球。
首先是太阳,完全不动。 第二,地球,围绕太阳旋转,这似乎工作得很好。 最后,月球,它确实保持旋转到一个点,但似乎在绕地球做一个大椭圆,而不是绕地球做一般的旋转。当我真正停止地球自转时,月球自转良好。
我假设地球位置的变化正在影响月球应该如何旋转。
sf::Transform rotation;
rotation.rotate(mOrbitSpeed * dt.asSeconds(), mParent->getPosition());
sf::Vector2f positionAfterRotation = rotation.transformPoint(getPosition());
setPosition(positionAfterRotation);
行星的原点设置在中间,即 I.E.所以 getPosition() 也得到了行星的中心。获取位置返回 x 和 y 坐标。 mParent 将是轨道上的父母(即地球的太阳。)
有什么建议吗?谢谢!
【问题讨论】:
-
您想要在地球参考系中的简单圆形轨道,但您在太阳参考系中进行旋转。我很惊讶你得到一个像椭圆形一样乖巧的结果。用地球的轨道运动绕太阳旋转月球,然后用月球的轨道运动绕地球旋转,你会没事的。