在JS中围绕旋转对象旋转对象

时间:2016-05-14 11:15:25

标签: javascript svg rotation

我有一个小太阳系Javascript项目。我已经弄明白如何在一个完整的圆周内完美地旋转太阳周围的SVG物体,而不必担心x和y位置。 (我知道,行星用椭圆旋转,并不重要。)

这是代码。

 function rotate_point(pointX, pointY, originX, originY, ang) {
        ang =  ang * Math.PI / 180.0;
        return {
            x: Math.cos(ang) * (pointX-originX) - Math.sin(ang) * (pointY-originY) + originX ,
            y: Math.sin(ang) * (pointX-originX) + Math.cos(ang) * (pointY-originY) + originY 
        };} // rotate_point

我不能为我的生命绕地球旋转月球,因为地球本身在旋转并且不能足够准确地定位它。我处于一个完美的圆圈中,但它永远不会从地球的中心旋转为轴,所以它一直向一侧凸出。我试过调整它的x和y位置,转速,没什么。

任何人都可以看到代码中有什么问题可以让我在地球周围完美地旋转月亮吗?

这是小提琴:

https://jsfiddle.net/yf3sgsu5/

1 个答案:

答案 0 :(得分:2)

我相信你的问题是你在尝试进行月球旋转之前移动了地球元素。因此,当你做月亮部分时,卫星轨道的中心已经改变了。你得到一个椭圆轨道,因为半径根据地球是朝向还是远离月球而变化。

在移动之前,您需要阅读地球的cx,cy。或者你可以独立计算轨道位置(见下文)。

https://jsfiddle.net/yf3sgsu5/3/