首页 > 解决方案 > 在 Matlab 中绘制两个具有相同焦点的椭圆

问题描述

我试图在 Matlab 中用相同的焦点绘制两个不同的椭圆。本质上,我正在绘制脉冲机动之前和之后的椭圆轨道。

第一个(操作前)椭圆将始终与 x 轴对齐,而第二个椭圆(操作后)将与 x 轴上方/下方成一定角度(第二个椭圆将具有不同的主要/次要轴和偏心率)。

为了节省篇幅,绘制一个椭圆的代码与第二个椭圆的代码相同,所以这里只展示绘制一个椭圆的代码。

问题是它是从网格中心绘制的,而不是焦点。

 Re = 6378.136;    %km
 e  = .65;
 x1 = -4.4*Re;     %-a
 x2 =  4.4*Re;     % a
 y1 = 0;
 y2 = 0;

 a = 1/2*sqrt((x2-x1)^2+(y2-y1)^2);
 b = a*sqrt(1-e^2);
 t = linspace(0,2*pi);

 X = a*cos(t);
 Y = b*sin(t);

 w = atan2(y2-y1,x2-x1);

 x = (x1+x2)/2 + X*cos(w) - Y*sin(w);
 y = (y1+y2)/2 + X*sin(w) + Y*cos(w);

 plot(x,y,'b')
 axis equal
 grid on
 hold on

我确定这很简单,但我似乎无法弄清楚。

任何帮助深表感谢。谢谢。

编辑:大卫帮助解决了这个问题,谢谢。

标签: matlabmatlab-figureellipseorbital-mechanics

解决方案


推荐阅读