MATLAB绘制圆、椭圆、矩形等基本平面图形 您所在的位置:网站首页 matlab矩形函数rect MATLAB绘制圆、椭圆、矩形等基本平面图形

MATLAB绘制圆、椭圆、矩形等基本平面图形

2023-08-13 12:07| 来源: 网络整理| 查看: 265

MATLAB绘制基本平面图形 **画线的方法*****rectangle函数****画矩形的方法****旋转矩形的方法****画圆的方法****画圆弧的方法****画椭圆的方法****画椭圆弧的方法****画多边形的方法****♥三角形****♥梯形****♥六边形** **画爱心的方法****♥平面爱心****♥立体爱心**

画线的方法 plot([1 6],[3 3],'r','linewidth',1.5);%与x轴平行的直线 hold on plot([5 5],[3 7],'b','linewidth',2);%与y轴平行的直线 hold on plot([2 4],[3 7],'k','linewidth',2);%斜线 axis equal *rectangle函数

函数功能: 该函数画一个矩形,用当前的画笔画矩形轮廓,用当前画刷进行填充,其默认位置是[0,0,1,1] ,默认曲率是 [0,0](也就是说,没有曲率)。 调用格式:

rectangle(‘Position’,[x,y,w,h]); %在指定位置绘制矩形,其中x,y为矩形左下角坐标,w,h分别为矩形的长和宽。

rectangle(…,‘Curvature’,[x,y]); %指定矩阵边的曲率,可以使它从矩形到椭圆不同变化,水平曲率x为矩形宽度的分数,是沿着矩形的顶部和底部的边进行弯曲。竖直曲率y为矩形高度的分数,是沿着矩形的左面和右面的边进行弯曲。x和y取值范围是从0(无曲率)到1(最大曲率)。值[0,0]绘制一个成直角的矩形,值[x,y]绘制一个椭圆。如果仅仅指定曲率的一个值,那么在水平曲率和竖直曲率都有相同的值。

‘edgecolor’,‘r’ 表示边框颜色是红色; ‘facecolor’,‘g’ 表示面内填充颜色为绿色。

画矩形的方法

利用rectangle函数,曲率设置为0。

rectangle('Position',[-20 -10 40 20],'edgecolor','k','facecolor','g','linewidth',1.8) axis equal 旋转矩形的方法 hg = hgtransform; rectangle('Position',[0,0,40,20],'Curvature',[0 0],'edgecolor','k','facecolor','y','parent',hg,'linewidth',2) hg.Matrix = makehgtform('zrotate',pi/6); % 绕原点(z轴)逆时针旋转60° axis equal

在这里插入图片描述

画圆的方法

♡第一种: 利用rectangle函数,曲率设置为1。

r = 150;%半径 a = 150;%圆心横坐标 b = 150;%圆心纵坐标 para = [a-r, b-r, 2*r, 2*r]; rectangle('Position', para, 'Curvature', [1 1],'EdgeColor', 'r'); axis equal

♡第二种: MATLAB里自带的工具

viscircles([0 0],150,'Color','b');%圆心坐标为(0,0),半径为150,轮廓颜色为蓝色

♡第三种: 利用圆的参数方程

r = 150;%半径 a = 150;%圆心横坐标 b = 150;%圆心纵坐标 theta=0:0.1:2*pi; x=a+r*cos(theta); y=b+r*sin(theta); plot(x,y,'g','linewidth',1); axis equal 画圆弧的方法

利用圆的参数方程,改变角度值,即可改变圆弧长度。

r=60;%半径 a=150;%圆心横坐标 b=25;%圆心纵坐标 theta=pi:0.01:2*pi;%180度到360度的圆弧 x=a+r*cos(theta); y=b+r*sin(theta); plot(x,y,'k','linewidth',2); axis equal 画椭圆的方法

♡第一种: 利用rectangle函数,曲率设置为1。

rectangle('Position',[0,0,6,4],'Curvature',[1 1],'edgecolor','k','facecolor','g','linewidth',2); axis equal

♡第二种: 利用椭圆定义

Num=1000; cicle=zeros(Num,2); a=60;%长半轴 b=30;%短半轴 for i=1:Num theta=-pi+i/Num*2*pi; dOP=a*b/sqrt(a^2*sin(theta)^2+b^2*cos(theta)^2); cicle(i,:)= dOP*[cos(theta) sin(theta)]; end plot(cicle(:,1)+80,cicle(:,2)-150,'k','linewidth',2); fill(cicle(:,1)+80,cicle(:,2)-150,'g');%填充颜色 axis equal

♡第三种: 利用椭圆的参数方程

a=150;%圆心横坐标 b=150;%圆心纵坐标 c=60;%长半轴 d=40;%短半轴 theta=0:0.1:2*pi; x=a+c*cos(theta); y=b+d*sin(theta); plot(x,y,'g','linewidth',2); axis equal 画椭圆弧的方法

利用椭圆的参数方程,改变角度值,即可改变椭圆弧长度。

a=150;%圆心横坐标 b=150;%圆心纵坐标 c=60;%长半轴 d=40;%短半轴 theta=pi:0.1:2*pi; x=a+c*cos(theta); y=b+d*sin(theta); plot(x,y,'g','linewidth',2); axis equal 画多边形的方法 ♥三角形

每个数据点用小圆圈表示,且各个数据点之间用实线连接。

x=10*rand(1,3); y=10*rand(1,3); for i=1:length(x) for j=1:length(y) line([x(i),x(j)],[y(i),y(j)],'linewidth',2); %连接所有节点 hold on; end end plot(x,y,'ro','linewidth',2); %画节点line([x1,x2]

在这里插入图片描述

♥梯形

将各个点的坐标保存在数组中,用plot函数画出图形。坐标矩阵的最后需要重复起始点坐标。

xL=[-71 -34 -45 -71]; yL=[-46 -77 -88 -65]; plot(xL,yL,'k','linewidth',2); fill(xL,yL,d);

在这里插入图片描述

♥六边形

将各个点的坐标保存在数组中,将一个点与其相邻的点相连,并将最后一个点与第一个点连接。坐标矩阵的最后不需要重复起始点坐标。

a=[0 2 4 6 4 2;0 2 2 0 -2 -2]; %要连接的点坐标 x;y [n,m]=size(a); for i=1:m-1 line([a(1,i),a(1,i+1)],[a(2,i),a(2,i+1)],'linewidth',2); %连接节点line([x1,x2],[y1,y2]) hold on end hold on line([a(1,1),a(1,m)],[a(2,1),a(2,m)],'linewidth',2); %首尾节点相连 plot(a(1,:),a(2,:),'ro','linewidth',2); %画所有节点

在这里插入图片描述 例子:左脚丫

xL1=[-22 -22]; yL1=[-164 -172]; theta=4*pi/9:0.1:4*pi/3;%圆弧 xL2=-37+8*cos(theta); yL2=-179.07+8*sin(theta); xL3=[-41 -2 -2 -22]; yL3=[-186 -186 -164 -164]; xL=[xL1 xL2 xL3]; yL=[yL1 yL2 yL3]; plot(xL,yL,'k'); fill(xL,yL,'k'); axis equal 画爱心的方法 ♥平面爱心

♡第一种:

subplot(121); x=linspace(-2,2,1000); y1=sqrt(2*sqrt(x.^2)-x.^2); y2=-2.14*sqrt(sqrt(2)-sqrt(abs(x))); plot(x,y1,'b',x,y2,'b'); axis([-2.5,2.5,-3,1.5]); subplot(122); t=linspace(-3,3,100); x=16*(sin(t)).^3; y=-28+13*cos(t)-5*cos(2*t)-2*cos(3*t)-cos(4*t); plot(x,y,'k','linewidth',2);%画爱心 fill(x,y,'r'); axis equal

♡第二种:

subplot(131);ezplot('x^2+(y-(x^2)^(1/3))^2=9'); subplot(132);ezplot('-x^2*y^3+(x^2+y^2-1)^3=0',[-1.5,1.5]); subplot(133);ezplot('17*x.^2-16*abs(x).*y+17*y.^2=200'); ♥立体爱心

♡第二种:

subplot(131); [x,y,z]=meshgrid(linspace(-1.5,1.5)); f=@(x,y,z)(x.^2 + (9/4)*y.^2 + z.^2 - 1).^3 - x.^2.*z.^3 - (9/80)*y.^2.*z.^3; p=patch(isosurface(x,y,z,f(x,y,z),0)); view(3);axis equal set(p,'FaceVertexCData',jet(size(get(p,'faces'),1)) ,'FaceColor', 'flat', 'EdgeColor', 'none'); subplot(132); f=@(x,y,z)(x.^2+ (9./4).*y.^2 + z.^2 - 1).^3 - x.^2.*z.^3 - (9./80).*y.^2.*z.^3; [x,y,z]=meshgrid(linspace(-3,3)); val=f(x,y,z); [p,v]=isosurface(x,y,z,val,0); patch('faces',p,'vertices',v,'facevertexcdata',jet(size(v,1)),'facecolor','w','edgecolor','flat'); view(3);grid on;axis equal; subplot(133); f=@(x,y,z)(x.^2+ (9./4).*y.^2 + z.^2 - 1).^3 - x.^2.*z.^3 - (9./80).*y.^2.*z.^3; [x,y,z]=meshgrid(linspace(-1.5,1.5)); val=f(x,y,z); isosurface(x,y,z,val,0); axis equal;view(3);colormap([1 0.2 0.2]);


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有