MATLAB绘制小黄人

最近因为疫情的原因,在家比较无聊,顺便学习用matlab画画。
首先,在网上找了一张小黄人的简笔画。
网上找的小黄人简笔画
然后,选好坐标原点,计算出要画的图形位置坐标。
最后,用代码绘制出图形,并填充上颜色。
下面是我自己用matlab绘制的小黄人,因为还是菜鸟一枚_(¦3」∠)_,画出来的有一点变动。
在这里插入图片描述
附上小黄人代码:

%===========================================%
%--------------MATLAB绘制小黄人--------------%
%===========================================%

clear all; %清除所有变量
close all; %清图
clc ;      %清屏

y0=[1,0.91314,0];%设置黄颜色
d=[0.11765,0.56471,1];%设置蓝颜色

%% 胳膊
%左边(圆心坐标为(125,252.5))
hg = hgtransform;
rectangle('Position',[-30,-125,40,40],'Curvature',[0.6 0.6],'edgecolor','k','facecolor',y0,'parent',hg,'linewidth',2)
hg.Matrix = makehgtform('zrotate',-pi/6);	% 绕原点(z轴)逆时针旋转60°
hold on
rectangle('Position',[-72.5,-90,6,5],'Curvature',[1 1],'edgecolor','k','facecolor','w','linewidth',2);

%右边(圆心坐标为(175,252.5))
hg = hgtransform;
rectangle('Position',[-10,-125,40,40],'Curvature',[0.6 0.6],'edgecolor','k','facecolor',y0,'parent',hg,'linewidth',2)
hg.Matrix = makehgtform('zrotate',pi/6);	% 绕原点(z轴)逆时针旋转60°
rectangle('Position',[66.5,-90,6,5],'Curvature',[1 1],'edgecolor','k','facecolor','w','linewidth',2);
axis equal

%% 头发
%第一根
theta=2*pi/6:0.1:4*pi/6;
x=-17+50*cos(theta);
y=8+50*sin(theta);
plot(x,y,'k','linewidth',2);
%第二根
theta=2*pi/6:0.1:3.9*pi/6;
x=-22+50*cos(theta);
y=10+50*sin(theta);
plot(x,y,'k','linewidth',2);
%第三根
theta=2.1*pi/6:0.1:4.1*pi/6;
x=21+50*cos(theta);
y=10+50*sin(theta);
plot(x,y,'k','linewidth',2);
%第四根
theta=2*pi/6:0.1:4*pi/6;
x=17+50*cos(theta);
y=8+50*sin(theta);
plot(x,y,'k','linewidth',2);

%% 身体
rectangle('Position',[-71,-55,142,110],'Curvature',[0.95 0.95],'edgecolor','k','facecolor',y0,'linewidth',2);
rectangle('Position',[-71,-164,142,110],'Curvature',[0.8 0.8],'edgecolor','k','facecolor',d,'linewidth',2);
rectangle('Position',[-71,-109,142,113],'Curvature',[0 0],'edgecolor','k','facecolor',y0,'linewidth',2);

%% 眼部
rectangle('Position',[-71,-4,142,8],'Curvature',[0 0],'edgecolor','k','facecolor','k');

%% 眼睛
%左边(圆心(-25,0),半径25)
rectangle('Position',[-50,-25,50,50],'Curvature',[1 1],'edgecolor','k','facecolor','w','linewidth',2);
%右边(圆心(25,0),半径25)
rectangle('Position',[0,-25,50,50],'Curvature',[1 1],'edgecolor','k','facecolor','w','linewidth',2);

%% 眼珠子
%左边(圆心(-25,0),半径11)
rectangle('Position',[-36,-11,22,22],'Curvature',[1 1],'edgecolor','k','facecolor','k');
%右边(圆心(25,0),半径11)
rectangle('Position',[14,-11,22,22],'Curvature',[1 1],'edgecolor','k','facecolor','k');

%% 眼白
%左边(圆心(-22,3),半径5)
rectangle('Position',[-27,-2,10,10],'Curvature',[1 1],'edgecolor','w','facecolor','w');
%右边(圆心(28,3),半径5)
rectangle('Position',[23,-2,10,10],'Curvature',[1 1],'edgecolor','w','facecolor','w');

%% 嘴巴(圆弧)(圆心(0,0),半径50)
theta=4*pi/3:0.1:5*pi/3;
x=50*cos(theta);
y=50*sin(theta);
plot(x,y,'k','linewidth',2);

%% 衣服
%先画矩形
rectangle('Position',[-52,-109,104,39],'Curvature',[0 0],'edgecolor','k','facecolor',d,'linewidth',2);
%再画蓝色的直线遮盖
plot([-52 52],[-109 -109],'color',d,'linewidth',2);%与x轴平行的直线
%裤缝(黑色直线)
plot([0 0],[-140 -164],'k','linewidth',2);%与y轴平行的直线

%% 肩带(多边形)
%左边
xL=[-71 -34 -45 -71];
yL=[-46 -77 -88 -65];
plot(xL,yL,'k','linewidth',2);
fill(xL,yL,d);
%右边
xR=[71 34 45 71];
yR=[-46 -77 -88 -65];
plot(xR,yR,'k','linewidth',2);
fill(xR,yR,d);
%左边纽扣(直径为6,圆心坐标为(-50,-79))
rectangle('Position',[-48,-81,6,6],'Curvature',[1 1],'edgecolor','k','facecolor','k');
%右边纽扣(直径为6,圆心坐标为(50,-79))
rectangle('Position',[42,-81,6,6],'Curvature',[1 1],'edgecolor','k','facecolor','k');

%% 裤兜(圆弧)
%左边(圆心(-71,-109),半径18)
theta=1.52*pi:0.01:1.85*pi;
x2=-71+18*cos(theta);
y2=-109+18*sin(theta);
plot(x2,y2,'k','linewidth',2);
%右边(圆心(71,-109),半径18)
theta=1.15*pi:0.01:1.48*pi;
x2=71+18*cos(theta);
y2=-109+18*sin(theta);
plot(x2,y2,'k','linewidth',2);

%% 口袋
%先画直线
plot([-18 18],[-93 -93],'k','linewidth',2);%与x轴平行的直线
plot([-18 -18],[-93 -103],'k','linewidth',2);%与y轴平行的直线
plot([18 18],[-93 -103],'k','linewidth',2);%与y轴平行的直线
%再画圆弧(圆心(0,-103),半径18)
theta=pi:0.01:2*pi;
x2=0+18*cos(theta);
y2=-103+18*sin(theta);
plot(x2,y2,'k','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');
%右边
xR1=[22 2 2 41];
yR1=[-164 -164 -186 -186];
theta=-pi/3:0.1:4*pi/9;%圆弧
xR2=37+8*cos(theta);
yR2=-179.07+8*sin(theta);
xR3=[22 22];
yR3=[-172 -164];
xR=[xR1 xR2 xR3];
yR=[yR1 yR2 yR3];
plot(xR,yR,'k');
fill(xR,yR,'k');

axis equal
axis off
% title('小黄人');
  • 23
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Matlab是一款非常强大的数学软件,常用于科学研究、数据处理和可视化等方面。在信号处理领域,小波功率谱是一种常用的分析方法。下面将介绍如何利用Matlab绘制小波功率谱。 首先,需要安装小波工具箱(Wavelet Toolbox),这是Matlab自带的一个工具箱,用于小波分析和处理。可以通过在命令窗口中输入“wavemenu”来打开小波工具箱窗口。 在小波工具箱中,可以选择不同的小波类型和尺度,以及不同的信号处理方法。其中,小波功率谱是一种常用的分析方法,可以通过“spectrogram”函数绘制。 在Matlab中,绘制小波功率谱的一般步骤如下: 1. 导入数据:可以从文件中读取数据,或者直接生成数据。例如,可以使用“randn”函数生成一个任意长度的随机信号序列。 2. 选择小波类型和尺度:在小波工具箱中,选择适当的小波类型和尺度。例如,可以选择Daubechies小波和4级尺度。 3. 进行小波变换:使用“wavedec”函数进行小波变换,得到小波系数。 4. 绘制小波功率谱:使用“spectrogram”函数绘制小波功率谱。需要指定小波系数、采样率和频率范围等参数。 5. 调整图像显示:可以对绘制的小波功率谱进行调整,例如修改显示范围、添加标签等。 以上是绘制小波功率谱的基本步骤,具体实现可以参考Matlab官方文档和网络教程。绘制小波功率谱是信号处理和分析中的重要工作,对于研究信号特征和提取信息具有重要意义。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值