【问题标题】:Rotate an object around a rotating object in JS在JS中围绕旋转对象旋转对象
【发布时间】:2016-05-14 11:15:25
【问题描述】:

我有一个小太阳系 Javascript 项目。我已经想出了如何在不担心 x 和 y 位置的情况下将 SVG 对象完美地围绕太阳旋转一圈。 (我知道,行星以椭圆旋转,并不重要。)

这是代码。

 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/

【问题讨论】:

    标签: javascript svg rotation


    【解决方案1】:

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

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

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

    【讨论】:

    • 这正是我想要的。独立的轨道位置玩起来很有趣,谢谢。
    猜你喜欢
    • 2021-09-13
    • 2014-12-28
    • 2017-02-10
    • 1970-01-01
    • 2015-01-06
    • 1970-01-01
    • 2017-07-14
    • 2013-05-21
    相关资源
    最近更新 更多