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:Numtheta=-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;endendplot(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-1line([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绘制圆、椭圆、矩形等基本平面图形相关推荐

  1. matlab绘制圆,且求解两个圆的交点坐标

    前言 这里简单记录下对于matlab绘制圆,以及求解两圆交点的坐标的实现(包括C++). 一 绘制圆 circle.m文件: function [] = circle(x, y, r, color) ...

  2. cesium动态绘制圆,矩形,自定义区域

    cesium动态绘制圆,矩形,自定义区域 自己封装了一个类,可以放在js文件中引入项目,具体使用和代码如下 class Draw {constructor(viewer, config) {/**ce ...

  3. 在MFC中,利用GDI绘制橡皮筋效果-直线,圆,椭圆,矩形

    这段时间学习了GDI和GDI+:如果想实现橡皮筋效果,还是离不开GDI.虽然GDI+也能实现,但比较麻烦,有局限性,必须用到双缓冲. 下面贴出GDI绘制橡皮筋效果的示例代码 ZKCADView.h: ...

  4. 使用Pillow绘制圆、矩形、饼图、圆弧以及绘制文字

    导读 Pillow是Python中一个常用的图像处理库,这篇文章我们就来介绍一下如何通过Pillow来实现在图片上绘制各种图像以及文字. 安装 pip install Pillow 绘制文字 下载字体 ...

  5. Labview绘制圆/椭圆

    LabVIEW专栏:https://blog.csdn.net/weixin_44543463/category_10714833.html 一.介绍 1.1 for循环 for循环是固定次数的循环, ...

  6. matlab 绘制圆

    绘制圆 已知x=sinx,y=cost,请绘制相应的图形 clc,clear; hold on for t=-pi:0.01:pix=sin(t);y=cos(t);plot(x,y,'m+'); e ...

  7. MFC 直线 虚线 折线 圆 椭圆 矩形 弧形

    ****Dlg.h头文件加入: //为project加入画笔.点变量数组 public:CPen m_pen[5];CPoint m_point[5]; public:void DrawLine(CD ...

  8. opencv 学习第三课 画线段 圆 椭圆 矩形 多边形 插入文字 代码注释版 保证你每一行都能读懂

    import numpy as np import cv2 as cv # 创建一张大小为512×512,通道数为3的黑色的图片 img = np.zeros((512,512,3), np.uint ...

  9. matlab绘制一组椭圆,在MATLAB中绘制椭圆和椭圆体

    Ellipse文章 Wikipedia有一个简单的JavaScript代码绘制椭圆. 它使用参数形式: x(theta) = a0 + ax*sin(theta) + bx*cos(theta) y( ...

最新文章

  1. 10行 python 代码做出哪些酷炫的事情?
  2. 注册博客第一天,有些激动
  3. jQuery仿淘宝商城天猫鼠标移动过去,透明度降低
  4. 英语四级比计算机等级难多少,英语四级难考吗?学长:掌握方法,过“425”分不困难...
  5. 关于window.history.back()后退问题
  6. 给定条件找最小值c语言程序_根据给定条件最小化n的最小步骤
  7. C/C++轻松写基于UDP的远程控制
  8. 视觉SLAM十四讲学习笔记-第七讲-视觉里程计-对极几何和对极约束、本质矩阵、基础矩阵
  9. [Project Euler] 来做欧拉项目练习题吧: 题目013
  10. 纯 css 实现 a 标签 loading 效果
  11. title()、upper()、lower()的用法
  12. scala中内部函数的使用
  13. 又一次全球第一!| 凌云时刻
  14. matlab 图例 显示为公式样式
  15. 跟着小皮老师了解Go语言LiteIDE详细使用教程❤
  16. iOS12完美越狱来了!漫谈iOS12缓解机制
  17. java 图片去水印_Java实现图片水印
  18. 山西省将率先实现全覆盖社保“一卡通”
  19. Silvaco TCAD——二维工艺仿真
  20. Oracle rtrim、to_char函数格式化数字 小数Format展示,FM999990D99

热门文章

  1. Android 隐私数据_Android安全警告:10亿台安卓设备不再支持安全更新
  2. 学情分析场景解读,助力教育机构提升课程质量和学员学习效果
  3. 中琅条码打印软件如何批量打印单色黑流水号
  4. 解决win10搜索框不能用的问题
  5. Python 简单元组入门之“简易中文数字对照表”
  6. SQL 视图(Views)
  7. 第一次计算机比赛心得
  8. oracle数据库生僻字 问号,有关生僻字的文章推荐10篇
  9. MySQL 各个索引的使用
  10. delphi xe 解析复杂json