2017-06-15 50 views
2

我想繪製菲涅耳橢圓和兩點(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

回答

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); 

所以我覺得可能是由於在Matlab圖形平滑是由於Jaggies或其他產物。我也無法理解。我知道我的答案可能不是最好的答案,但你從我的最終確認這個有趣的現象。我在Matlab 2017a中運行。

順便說一句,我在你的代碼中發現的唯一問題不在於橢圓圖。我相信,在這一行

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

應該

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

我@Y同意。長安,我認爲該代碼是正確的模r中的變化,併爲完整起見,請注意,如果你調用

axis equal 

,所以我猜它與MATLAB繪圖做這個問題就不存在了,但我不不明白爲什麼。感謝您發現這個問題!

+0

我有一個完全錯誤的情節使用軸平等 – kosar