我是靠谱客的博主 老实曲奇,最近开发中收集的这篇文章主要介绍MATLAB绘制圆、椭圆、矩形等基本平面图形,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

最后

以上就是老实曲奇为你收集整理的MATLAB绘制圆、椭圆、矩形等基本平面图形的全部内容,希望文章能够帮你解决MATLAB绘制圆、椭圆、矩形等基本平面图形所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部