2016-05-14 11 views
0

私は少し太陽光システムのJavascriptプロジェクトを持っています。 SVGオブジェクトを太陽のまわりで完全な円で完全に回転させる方法を、xとyの位置を気にせずに理解しました。 (私が知っているのは、惑星は楕円で回転し、重要ではない)JSの回転するオブジェクトの周りのオブジェクトを回転

これはそのコードです。

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/

答えて

2

私はあなたの問題はあなたが月のローテーションを行うにしようとする前に、地球の要素を移動していることであると信じています。あなたが月の部分をすると、月の軌道の中心が変わりました。地球が月に近づいているか遠ざかっているかによって半径が変わるため、楕円軌道が得られます。

移動する前に、地球のcx,cyを読む必要があります。あるいは、独立して軌道位置を計算することもできます(下記参照)。

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

+0

これはまさに私が欲しかったものです。独立した軌道の位置は一緒に遊ぶのが楽しいです、ありがとう。 – JohnMichael

関連する問題