绘图(菲涅耳)椭圆和长轴

时间:2017-06-15 12:35:20

标签: matlab plot matlab-figure ellipse fresnel

我试图绘制菲涅耳椭圆和两点(x1,y1)和(x2,y2)之间的直线。另外我试图使用atan2旋转椭圆。 首先,我不明白为什么绘制的红轴与椭圆的富有想象力的长轴不一样。它们具有不同的角度和长度。 其次,我不确定我是否使用正确的公式来绘制带旋转的椭圆。

f=217.25;
Ht=45;
Hr=2.5;

figure (10);
x1=0;
x2=2.415512976422468e+04;
y1=2.609242854399548e+02+Ht;% Ht is trasmitter antenna height
y2=40.819199999995895+Hr;% Hr is receiver antenna height

% plot line of sight (major axis of ellipse)
hold on,plot([x1 x2],[y1 y2],'r')

% Plot 1st Fresnel zone - ELLIPSE
fr=f*1e6;% f in Hz
c=2.997925e8;% speed of light in m/s
lambda=c/fr; % wavelength in meters
a = 1/2*sqrt((x2-x1)^2+(y2-y1)^2); %majoraxis/2
r = sqrt(lambda*a/2);% b=r %secondaxis/2

t = linspace(0,2*pi,300);
X = a*cos(t);
Y = r*sin(t); 
w = atan2(y2-y1,x2-x1); %angle of two points
x = (x1+x2)/2 + X*cos(w) - Y*sin(w);
y = (y1+y2)/2 + X*sin(w) + Y*cos(w);
hold on, plot(x,y,'-k')
grid on

Fresnel ellipse

2 个答案:

答案 0 :(得分:0)

我在代码中看到旋转椭圆时没有任何问题。我很惊讶红线似乎与主轴不匹配。

如果您绘制椭圆而不旋转它的主轴,然后旋转,它看起来与您的图片完全相同。

X = a*cos(t);
X = [X -a];
Y = r*sin(t); 
Y = [Y 0];
x = xmid + X*cos(w) - Y*sin(w);
y = ymid + X*sin(w) + Y*cos(w);

所以我认为这可能是由于Jaggies或其他工件造成的,因为Matlab图形中的平滑。我也听不懂。我理解我的答案可能不是最好的答案,但是我得到了关于这个有趣现象的确认。我参加了Matlab 2017a。

BTW,我在你的代码中发现的唯一问题不是关于椭圆绘图。我相信这一行

r = sqrt(lambda*a/2);% b=r %secondaxis/2

应该是

r = sqrt(lambda*a)/2;% b=r %secondaxis/2

答案 1 :(得分:0)

我同意@Y。 Chang,我认为代码是正确的模数r的变化,为了完整起见,请注意,如果你打电话,这个问题就会消失

axis equal

所以我猜它与matlab绘图有关,但我不明白为什么。谢谢你发现了这个问题!