我正在使用 SVG 围绕一颗恒星绘制行星轨道,我需要绘制一个基于一个焦点而不是几何中心的椭圆。我在 2d 中绘制它,但位置需要考虑椭圆围绕焦点的旋转,以及对 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值。我也认为近日点的论点也可能适合这里,但我不确定在哪里。
我知道这些值小于一,但是一旦我弄清楚了这个过程,我就会使用乘数来放大所有内容。
更新:
感谢 BigBadaboom,我现在可以围绕焦点旋转椭圆。我仍然需要弄清楚如何在 3d 中旋转它。据我所知,这些是步骤:
- 将焦点平移到 0,0 -完成
- 通过近日点(29.124deg)的参数沿 z 轴(2d 旋转)旋转 -完成(感谢 BigBadaboom)
- 沿 y 轴旋转(3d 旋转)倾斜度(7.005 度) - ???
- 再次沿 z 轴旋转升交点的经度 (48.331deg) - 与步骤 2 相同的过程。
所有旋转都以 0,0 为中心。