在JS中围绕旋转对象旋转对象
Rotate an object around a rotating object in JS
我有一个小的太阳系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/
我认为你的问题是,在你试图进行月球自转之前,你正在移动地球元素。因此,当你做月球部分时,卫星轨道的中心已经改变了。你会得到一个椭圆轨道,因为半径取决于地球是向月球移动还是远离月球。
在移动地球之前,你需要读取地球的cx,cy
。或者你可以独立计算轨道位置(见下文)。
https://jsfiddle.net/yf3sgsu5/3/
相关文章:
- 在JS中围绕旋转对象旋转对象
- Threejs-围绕中心旋转对象
- 使用tween.js围绕世界轴旋转对象
- 在HTML5画布中,是否可以围绕旋转对象旋转对象
- 逐渐旋转对象使其面向某个点
- 从对象旋转对象.带有自定义动画功能的trix.setrotationfromleuler
- 如何使用本地坐标旋转对象
- 绕世界轴旋转对象
- 使用捕捉 SVG 将旋转对象限制在边界内
- 旋转对象以匹配轨迹
- Three.js-鼠标移动时沿(0,0,0)旋转对象
- three.js:结合tween.js围绕世界轴旋转对象
- 使用Rapha制作旋转对象的动画;l.js
- 在HTML画布中移动旋转对象
- 在指定的时间内围绕一个圆旋转对象
- Javascript Canvas如何从旋转对象拍摄360*
- CSS3和HTML5 -旋转对象组
- 由多个其他旋转对象组成的旋转对象
- Javascript中的可拖动和可旋转对象(Mootools)
- 点击旋转对象