绘制圆,变换成椭圆(这里需要一个变换矩阵)。
MATLAB中的绘制:使用参数方程的形式。
figure(1)
plot([-5 5],[0 0],'k','LineWidth',1);hold on;% 画坐标轴
plot([0 0],[-5 5],'k','LineWidth',1);hold on;theta=0:pi/20:2*pi;% 参数theta
a=2;b=3;% 长短轴
x1=a*cos(theta) +1;% 偏置
y1=b*sin(theta) +1;
plot(x1,y1,'-');hold on;
axis equal
调用MATLAB自带的ezplot函数画椭圆。
ezplot('x^2+2*x*y+3*y^2+4*x+5*y = 6');
axis([-6 3 -3 3]);
调用 MATLAB 自带的 ellipse1 函数画此椭圆, ellipse1 函数根据椭圆中心坐标、长半轴、偏心率和方向角画椭圆。【已知椭圆中心坐标为[1, 2],长半轴为10,短半轴为5,方向角为45°。】
ecc = axes2ecc(10,5); % 根据长半轴和短半轴计算椭圆偏心率
[elat,elon] = ellipse1(1,2,[10 ecc],45);
plot(elat,elon)
线性代数—二次型,二次型的矩阵表达。行列式的几何意义:面积。
比如:椭圆方程:[x,y][3, 1;1, 4][x,y]' = 5,即3*x*x + 2*x*y + 4*y*y = 5
利用线性代数中所讲的二次型化标准型的办法将一般椭圆方程化为标准椭圆方程,先作出标准椭圆曲线,然后通过坐标旋转得到所要的椭圆曲线图像。
function h = ellipsefig1(a,b,c,d,e,f,x,y)
% 画一般椭圆:ax*x+bx*y+c*y*y+d*x+e*y = f
P = [a b/2;b/2 c];
delta = b^2-4*a*c;
if delta >= 0
warning('这不是一个椭圆')
return;
end
x0 = (b*e-2*c*d)/delta;
y0 = (b*d-2*a*e)/delta;
r = a*x0^2 + b*x0*y0 +c*y0^2 + f;
if r <= 0
warning('这不是一个椭圆')
return;
end
[V, D] = eig(P);
aa = sqrt(r/D(1));
bb = sqrt(r/D(4));
t = linspace(0, 2*pi, 60);
xy = V*[aa*cos(t);bb*sin(t)];
h = plot(xy(1,:)-x0 +x,xy(2,:)-y0 +y, 'k', 'linewidth', 2);
或者通过配方将一般椭圆方程化为标准椭圆方程,作出标准椭圆曲线,然后通过坐标旋转和缩放得到所要的椭圆曲线图像。
aa = sqrt(r/a);
bb = sqrt(-4*a*r/delta);
t = linspace(0, 2*pi, 60);
xy = [1 -b/(2*a);0 1]*[aa*cos(t);bb*sin(t)];
用蒙特卡洛方法求椭圆面积 【】...
三维图
mesh()用于绘制不是特别精细的三维曲面网格图。surf()用于绘制比较光滑的三维曲面网格图。
sphere 的官方文档:...
MATLAB画椭圆面,meshgrid()的理解:
t=-pi:0.1*pi:pi;
s=-pi:0.1*pi:pi;
[u,v]=meshgrid(t,s);
x=2*sin(u).*cos(v) +1;
y=3*sin(u).*sin(v) +2;
z=cos(u);
surf(x,y,z)
椭圆抛物面
u=-12:0.1:12;
v=-12:0.1:12;
[x,y]=meshgrid(u,v);
z=x.^2./4+y.^2./16;
meshc(x,y,z);
椭圆锥面 文章来源:https://www.toymoban.com/news/detail-467877.html
u=0:pi/600:2*pi;
v=0:pi/600:2*pi;
[U,V]=meshgrid(u,v);
X=U*4.*cos(V);
Y=U*9.*sin(V);
Z=2*U;
mesh(X,Z,Y);
axis auto; 文章来源地址https://www.toymoban.com/news/detail-467877.html
到了这里,关于MATLAB—绘制椭圆的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!