1

SVG を使用して星の周りに惑星軌道を描いています。幾何学的な中心ではなく、1 つの焦点に基づく楕円を描く必要があります。2次元で描いていますが、位置は焦点を中心とした楕円の回転とZ軸に対する傾きを考慮する必要があります。

私はすでに軌道経路をたどる惑星を持っていますが、それらが一致するように下にある楕円を描くことができるようです. すべての回転パラメータ、長半径、短軸を含むすべての軌道データがあります。必要なデータはすべて揃っていることはわかっていますが、それをまとめる方法がわかりません。助けてください!

これは軌道コンポーネントの図です: http://upload.wikimedia.org/wikipedia/commons/thumb/e/eb/Orbit1.svg/400px-Orbit1.svg.png

軌道データの例

name: Mercury
semi-major axis (AU): 0.387098
eccentricity: 0.205630
longitude of ascending node (deg): 48.331
inclination (deg): 7.005
argument of perihelion (deg): 29.124

焦点を 0,0 にする必要があります。半短軸 ( ry = 0.387098*sqrt(1 - 0.205630^2) ) を計算することで、次のように楕円を正しい形状にすることができます。

<ellipse cx="0" cy="0" rx="0.387098" ry="0.378826" />

また、中心と焦点の間の距離 ( cx = sqrt(0.387098^2 - 0.378826^2) ) を計算することで、焦点を 0,0 に集中させることもできるので、次のようになります。

<ellipse cx="0.079597" cy="0" rx="0.387098" ry="0.378826" />

ポイント 0,0 を中心に楕円を回転させる方法がわかりません。昇順ノードの経度を使用して、幾何学的中心を中心に時計回りに回転できますが、楕円を Z 方向にも回転させる必要があり、rx 値と ry 値に影響します。近日点の議論もここに当てはまるかもしれないと思いますが、どこにあるのかわかりません。

値が 1 未満であることはわかっていますが、プロセスを理解したら、乗数を使用してすべてを拡大します。


アップデート:

BigBadaboom のおかげで、焦点を中心に楕円を回転させることができます。私はまだそれを3Dで回転させる方法を理解する必要があります. 私が理解できる限り、これらは手順です:

  1. 焦点を 0,0 に変換 -完了
  2. 近日点 (29.124deg) の引数で z 軸 (2 次元回転) に沿って回転 -完了(thanks BigBadaboom)
  3. y 軸に沿って傾き (7.005deg) だけ回転 (3d 回転) - ???
  4. 昇交点の経度 (48.331 度) だけ z 軸に沿って再度回転します。手順 2 と同じプロセスです。

すべての回転は 0,0 を中心にしています。

4

3 に答える 3

0

あなたがやろうとしていることのすべてを完全に理解しているかどうかはわかりません。しかし、次のように 0,0 の回転を実行できます。

<ellipse cx="0.079597" cy="0" rx="0.387098" ry="0.378826" transform="rotate(<angle> 0 0)"/>
于 2013-10-18T06:21:52.070 に答える