2017-06-15 24 views
2

フレネル楕円と2点(x1、y1)と(x2、y2)の間の線を描画しようとしています。さらに私はatan2を使って楕円を回転しようとしています。 最初に、描かれた赤い軸が楕円の想像上の長軸と同じでない理由を理解できません。彼らは角度と長さが異なっています。 第2に、回転を使って楕円を描くための正しい式を使用しているかどうかはわかりません。私はあなたのコード内で回転して楕円を作る際に何の問題が表示されていない描画(フレネル)楕円と長軸

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で走った。

私があなたのコードで見つけた唯一の懸念事項は、楕円描画ではありません。私は@Yに同意

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

する必要があります。このライン

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

を信じています。チャンは、私はこの問題は、あなたが

axis equal 

を呼び出す場合ので、私はそれがMatlabのプロットに関係していると思いますが、私ドン消えることに注意して、Rの変化を法、および完全性のためにコードが正しいと思います理由を理解できない。しかし、この問題を見つけてくれてありがとう!

+0

私は、軸が等しい – kosar

関連する問題