在Matlab中绘制两个同焦点椭圆

在Matlab中绘制两个同焦点椭圆,matlab,matlab-figure,ellipse,orbital-mechanics,Matlab,Matlab Figure,Ellipse,Orbital Mechanics,我试图在Matlab中用相同的焦点绘制两个不同的椭圆。基本上,我是在脉冲机动前后绘制椭圆轨道 第一个(机动前)椭圆将始终与x轴对齐,而第二个椭圆(机动后)将与x轴成一定角度(第二个椭圆也将具有不同的长轴/短轴和偏心率) 为了节省空间,绘制一个椭圆的代码将与绘制第二个椭圆的代码相同,因此我在这里只显示绘制一个椭圆的代码 问题是它从网格的中心绘制,而不是从焦点绘制 Re = 6378.136; %km e = .65; x1 = -4.4*Re; %-a x2 = 4.4*

我试图在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

我相信这很简单,但我似乎不明白

非常感谢您的帮助。谢谢


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

“问题是它是从网格的中心绘制的,而不是从焦点。”你这是什么意思?因为x1+x2=0,你的椭圆将以原点为中心,这就是问题所在吗?是的,谢谢。我知道这是件愚蠢的事。我知道有x1=-(a+ae);x2=(a-ae)。这给了我原点在右焦点上的中心。谢谢你的帮助,谢谢。