在Matlab中绘制两个同焦点椭圆
我试图在Matlab中用相同的焦点绘制两个不同的椭圆。基本上,我是在脉冲机动前后绘制椭圆轨道 第一个(机动前)椭圆将始终与x轴对齐,而第二个椭圆(机动后)将与x轴成一定角度(第二个椭圆也将具有不同的长轴/短轴和偏心率) 为了节省空间,绘制一个椭圆的代码将与绘制第二个椭圆的代码相同,因此我在这里只显示绘制一个椭圆的代码在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*
问题是它从网格的中心绘制,而不是从焦点绘制
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)。这给了我原点在右焦点上的中心。谢谢你的帮助,谢谢。