【发布时间】:2015-02-17 04:56:27
【问题描述】:
我想在 Matlab 中画一个椭圆;但是在我用谷歌搜索之后,我发现绘制所需的半轴 a 和 b 所需的所有方法,我从方程式中不知道;谁能告诉我如何在给定任何方程的情况下绘制图表,或者只是给我一个教程来做到这一点?
P.S:等式是r=a(1-e^2)/(1-e cosθ) where a = 17.9, e = 0.967276
【问题讨论】:
标签: matlab
我想在 Matlab 中画一个椭圆;但是在我用谷歌搜索之后,我发现绘制所需的半轴 a 和 b 所需的所有方法,我从方程式中不知道;谁能告诉我如何在给定任何方程的情况下绘制图表,或者只是给我一个教程来做到这一点?
P.S:等式是r=a(1-e^2)/(1-e cosθ) where a = 17.9, e = 0.967276
【问题讨论】:
标签: matlab
您可以扫描从0 到2*pi 的一系列间隔精细的θ 值,然后计算x 和y 坐标。
a = 17.9;
e = 0.967276;
points = 1000;
theta = 0:2*pi/points:2*pi;
theta = [theta 2*pi+1/points]; % add extra point to close the curve
r = a*(1-e^2)/(1-e*cos(theta));
x = r.*cos(theta);
y = r.*sin(theta);
plot(x,y);
axis equal;
您可能还想知道椭圆的偏心率e 是defined 为e = sqrt((a^2 - b^2)/(a^2)),因此您可以使用它来获得b = a*sqrt(1 - e^2)
【讨论】:
.)而不是for-loop,例如r=a*(1-e^2)./(1-e*cos(theta));,x = r.*cos(theta);,y = r.*sin(theta);。这避免了for 循环和x 和y 的初始化。
axis equal 防止了椭圆上的干扰视图。