使用Matlab绘制七夕咕呱小青蛙

目录
  • 基础代码
  • 动图生成代码

咕呱,咕呱,咕呱

咕呱,咕呱,咕呱

咕呱,咕呱,咕呱

七夕节到了还不快给你的朋友安排上这只咕呱小青蛙?

基础代码

function gugua
ax=gca;
ax.DataAspectRatio=[1 1 1];
ax.XLim=[-5 5];
ax.YLim=[-5 5];
ax.XColor='none';
ax.YColor='none';
ax.Color=[115,173,194]./255;
hold on
% hold(ax,'on')
% =========================================================================
% 绘制荷叶
[X,Y]=getEllipse([0.14,-1.5],3.6,1.8,0,200);
fill(X,Y,[166,211,177]./255,'EdgeColor',[41,47,50]./255,'LineWidth',4,'FaceAlpha',1)
fill([1.45,1.5,2.75],[-3.4,-2.4,-2.95],[115,173,194]./255,'EdgeColor','none')
plot([1.4,1.5,2.6],[-3.2,-2.4,-2.8],'Color',[41,47,50]./255,'LineWidth',4)
plot([-1.1,-0.8],[-3.2,-2.6],'Color',[51,57,50]./255,'LineWidth',2)
plot([-.6,-0.5],[-3.2,-2.9],'Color',[51,57,50]./255,'LineWidth',2)
plot([-3.3,-2.8],[-1.7,-1.63],'Color',[51,57,50]./255,'LineWidth',2)

% 绘制小草
[X,Y]=getEllipse([0,0],.62,.5,0,200);
Y=Y-.2;
X(Y<0)=[];Y(Y<0)=[];
X=[X,X(end:-1:1)];
Y=[Y,-Y(end:-1:1)];
[X1,Y1]=rotateData(X,Y,pi/8);X1=X1+.85;Y1=Y1+3.2;
[X2,Y2]=rotateData(X,Y,-pi/8);X2=X2-.15;Y2=Y2+3.2;
plot([.3,.33],[2.5,3],'Color',[41,47,50]./255,'LineWidth',4)
fill(X1,Y1,[185,215,108]./255,'EdgeColor',[41,47,50]./255,'LineWidth',2,'FaceAlpha',1)
fill(X2,Y2,[185,215,108]./255,'EdgeColor',[41,47,50]./255,'LineWidth',2,'FaceAlpha',1)

% 绘制腿部
[X,Y]=getEllipse([1.65,-1.5],.5,.2,0,200);
fill(X,Y,[185,215,108]./255,'EdgeColor',[41,47,50]./255,'LineWidth',2,'FaceAlpha',1)
[X,Y]=getEllipse([1.55,-1.8],.4,.15,-pi/5,200);
fill(X,Y,[185,215,108]./255,'EdgeColor',[41,47,50]./255,'LineWidth',2,'FaceAlpha',1)
[X,Y]=getEllipse([1.28,-1.8],.4,.2,-pi/2.5,200);
fill(X,Y,[185,215,108]./255,'EdgeColor',[41,47,50]./255,'LineWidth',2,'FaceAlpha',1)
[X,Y]=getEllipse([1.8,-.6],1.3,.8,pi/6,200);
fill(X,Y,[185,215,108]./255,'EdgeColor',[41,47,50]./255,'LineWidth',2,'FaceAlpha',1)
%
[X,Y]=getEllipse([-1.55,-1.3],.5,.2,0,200);
fill(X,Y,[185,215,108]./255,'EdgeColor',[41,47,50]./255,'LineWidth',2,'FaceAlpha',1)
[X,Y]=getEllipse([-1.48,-1.6],.4,.15,pi/5,200);
fill(X,Y,[185,215,108]./255,'EdgeColor',[41,47,50]./255,'LineWidth',2,'FaceAlpha',1)
[X,Y]=getEllipse([-1.18,-1.7],.4,.2,pi/2.5,200);
fill(X,Y,[185,215,108]./255,'EdgeColor',[41,47,50]./255,'LineWidth',2,'FaceAlpha',1)
[X,Y]=getEllipse([-1.6,-.45],1.3,.8,-pi/6,200);
fill(X,Y,[185,215,108]./255,'EdgeColor',[41,47,50]./255,'LineWidth',2,'FaceAlpha',1)

% 绘制身体和肚子
[X,Y]=getEllipse([0.27,0.4],2.25,2.18,0,200);
fill(X,Y,[185,215,108]./255,'EdgeColor',[41,47,50]./255,'LineWidth',4,'FaceAlpha',1)
[X,Y]=getEllipse([0.18,-.48],1.05,.75,-pi/15,200);
fill(X,Y,[253,241,155]./255,'EdgeColor',[41,47,50]./255,'LineWidth',1.8,'FaceAlpha',1)

% 绘制眼睛
[X,Y]=getEllipse([-1.39,2.1],.88,.81,pi/7,200);
fill(X,Y,[253,241,155]./255,'EdgeColor',[41,47,50]./255,'LineWidth',2,'FaceAlpha',1)
[X,Y]=getEllipse([1.9,1.98],.89,.81,-pi/7,200);
fill(X,Y,[253,241,155]./255,'EdgeColor',[41,47,50]./255,'LineWidth',2,'FaceAlpha',1)

[X,Y]=getEllipse([-1.28,2.1],.28,.28,0,200);
fill(X,Y,[41,47,50]./255,'EdgeColor',[41,47,50]./255,'LineWidth',2,'FaceAlpha',1)
[X,Y]=getEllipse([1.82,2.0],.28,.28,0,200);
fill(X,Y,[41,47,50]./255,'EdgeColor',[41,47,50]./255,'LineWidth',2,'FaceAlpha',1)

X=0:.01:pi;Y=-sin(X);
X=X./3.9-.2;
Y=Y./6+1.65;
plot(X,Y,'Color',[41,47,50]./255,'LineWidth',2)

% =========================================================================
% 椭圆数据点生成函数
    function [X,Y]=getEllipse(Mu,XR,YR,theta,pntNum)
        % Mu     | 中心点
        % XR,YR  | 旋转前X,Y半轴长度
        % theta  | 旋转角度
        % pntNum | 生成数据点个数
        tList=linspace(0,2*pi,pntNum);
        X=cos(tList).*XR;
        Y=sin(tList).*YR;
        rotateMat=[cos(theta),-sin(theta);sin(theta),cos(theta)];
        XY=rotateMat*[X;Y]+Mu(:);
        X=XY(1,:);Y=XY(2,:);
    end
% 数据旋转角度
    function [X,Y]=rotateData(X,Y,theta)
        rotateMat=[cos(theta),-sin(theta);sin(theta),cos(theta)];
        XY=rotateMat*[X;Y];
        X=XY(1,:);Y=XY(2,:);
    end
end

动图生成代码

function guguagif
ax=gca;
ax.DataAspectRatio=[1 1 1];
ax.XLim=[-5 5];
ax.YLim=[-5 5];
ax.XColor='none';
ax.YColor='none';
ax.Color=[115,173,194]./255;
hold on
DelayTime=.5;
pause(.5)
F=getframe(ax);
[imind,cm]=rgb2ind(F.cdata,256);
imwrite(imind,cm,'test.gif','gif','Loopcount',inf,'DelayTime',DelayTime);

% hold(ax,'on')
% =========================================================================
% 绘制荷叶
[X,Y]=getEllipse([0.14,-1.5],3.6,1.8,0,200);
fill(X,Y,[166,211,177]./255,'EdgeColor',[41,47,50]./255,'LineWidth',4,'FaceAlpha',1)
fill([1.45,1.5,2.75],[-3.4,-2.4,-2.95],[115,173,194]./255,'EdgeColor','none')
plot([1.4,1.5,2.6],[-3.2,-2.4,-2.8],'Color',[41,47,50]./255,'LineWidth',4)
plot([-1.1,-0.8],[-3.2,-2.6],'Color',[51,57,50]./255,'LineWidth',2)
plot([-.6,-0.5],[-3.2,-2.9],'Color',[51,57,50]./255,'LineWidth',2)
plot([-3.3,-2.8],[-1.7,-1.63],'Color',[51,57,50]./255,'LineWidth',2)
pause(.5);saveFrame()

% 绘制小草
[X,Y]=getEllipse([0,0],.62,.5,0,200);
Y=Y-.2;
X(Y<0)=[];Y(Y<0)=[];
X=[X,X(end:-1:1)];
Y=[Y,-Y(end:-1:1)];
[X1,Y1]=rotateData(X,Y,pi/8);X1=X1+.85;Y1=Y1+3.2;
[X2,Y2]=rotateData(X,Y,-pi/8);X2=X2-.15;Y2=Y2+3.2;
plot([.3,.33],[2.5,3],'Color',[41,47,50]./255,'LineWidth',4)
fill(X1,Y1,[185,215,108]./255,'EdgeColor',[41,47,50]./255,'LineWidth',2,'FaceAlpha',1)
fill(X2,Y2,[185,215,108]./255,'EdgeColor',[41,47,50]./255,'LineWidth',2,'FaceAlpha',1)
pause(.5);saveFrame()

% 绘制腿部
[X,Y]=getEllipse([1.65,-1.5],.5,.2,0,200);
fill(X,Y,[185,215,108]./255,'EdgeColor',[41,47,50]./255,'LineWidth',2,'FaceAlpha',1)
[X,Y]=getEllipse([1.55,-1.8],.4,.15,-pi/5,200);
fill(X,Y,[185,215,108]./255,'EdgeColor',[41,47,50]./255,'LineWidth',2,'FaceAlpha',1)
[X,Y]=getEllipse([1.28,-1.8],.4,.2,-pi/2.5,200);
fill(X,Y,[185,215,108]./255,'EdgeColor',[41,47,50]./255,'LineWidth',2,'FaceAlpha',1)
[X,Y]=getEllipse([1.8,-.6],1.3,.8,pi/6,200);
fill(X,Y,[185,215,108]./255,'EdgeColor',[41,47,50]./255,'LineWidth',2,'FaceAlpha',1)
%
[X,Y]=getEllipse([-1.55,-1.3],.5,.2,0,200);
fill(X,Y,[185,215,108]./255,'EdgeColor',[41,47,50]./255,'LineWidth',2,'FaceAlpha',1)
[X,Y]=getEllipse([-1.48,-1.6],.4,.15,pi/5,200);
fill(X,Y,[185,215,108]./255,'EdgeColor',[41,47,50]./255,'LineWidth',2,'FaceAlpha',1)
[X,Y]=getEllipse([-1.18,-1.7],.4,.2,pi/2.5,200);
fill(X,Y,[185,215,108]./255,'EdgeColor',[41,47,50]./255,'LineWidth',2,'FaceAlpha',1)
[X,Y]=getEllipse([-1.6,-.45],1.3,.8,-pi/6,200);
fill(X,Y,[185,215,108]./255,'EdgeColor',[41,47,50]./255,'LineWidth',2,'FaceAlpha',1)
pause(.5);saveFrame()

% 绘制身体和肚子
[X,Y]=getEllipse([0.27,0.4],2.25,2.18,0,200);
fill(X,Y,[185,215,108]./255,'EdgeColor',[41,47,50]./255,'LineWidth',4,'FaceAlpha',1)
[X,Y]=getEllipse([0.18,-.48],1.05,.75,-pi/15,200);
fill(X,Y,[253,241,155]./255,'EdgeColor',[41,47,50]./255,'LineWidth',1.8,'FaceAlpha',1)
pause(.5);saveFrame()

% 绘制眼睛
[X,Y]=getEllipse([-1.39,2.1],.88,.81,pi/7,200);
fill(X,Y,[253,241,155]./255,'EdgeColor',[41,47,50]./255,'LineWidth',2,'FaceAlpha',1)
[X,Y]=getEllipse([1.9,1.98],.89,.81,-pi/7,200);
fill(X,Y,[253,241,155]./255,'EdgeColor',[41,47,50]./255,'LineWidth',2,'FaceAlpha',1)

[X,Y]=getEllipse([-1.28,2.1],.28,.28,0,200);
fill(X,Y,[41,47,50]./255,'EdgeColor',[41,47,50]./255,'LineWidth',2,'FaceAlpha',1)
[X,Y]=getEllipse([1.82,2.0],.28,.28,0,200);
fill(X,Y,[41,47,50]./255,'EdgeColor',[41,47,50]./255,'LineWidth',2,'FaceAlpha',1)

X=0:.01:pi;Y=-sin(X);
X=X./3.9-.2;
Y=Y./6+1.65;
plot(X,Y,'Color',[41,47,50]./255,'LineWidth',2)
pause(.5);saveFrame()

% =========================================================================
% 椭圆数据点生成函数
    function [X,Y]=getEllipse(Mu,XR,YR,theta,pntNum)
        % Mu     | 中心点
        % XR,YR  | 旋转前X,Y半轴长度
        % theta  | 旋转角度
        % pntNum | 生成数据点个数
        tList=linspace(0,2*pi,pntNum);
        X=cos(tList).*XR;
        Y=sin(tList).*YR;
        rotateMat=[cos(theta),-sin(theta);sin(theta),cos(theta)];
        XY=rotateMat*[X;Y]+Mu(:);
        X=XY(1,:);Y=XY(2,:);
    end
% 数据旋转角度
    function [X,Y]=rotateData(X,Y,theta)
        rotateMat=[cos(theta),-sin(theta);sin(theta),cos(theta)];
        XY=rotateMat*[X;Y];
        X=XY(1,:);Y=XY(2,:);
    end
    function saveFrame
        F=getframe(ax);
        [imind,cm]=rgb2ind(F.cdata,256);
        imwrite(imind,cm,'test.gif','gif','WriteMode','append','DelayTime',DelayTime);
    end
end

到此这篇关于使用Matlab绘制七夕咕呱小青蛙的文章就介绍到这了,更多相关Matlab青蛙内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解Matlab如何绘制小提琴图

    目录 1使用示例 基础使用,Y为矩阵 基础使用,Y为向量,X为标签 基础使用多个图像绘制,并添加图例 2完整代码 写了个matlab绘制小提琴图的函数: 1.图中小提琴状区域为核密度曲线 2.白色方块为25%,75%分位数 3.中间横线为中位数 4.白色点为离群值点 5.竖着的黑线是去掉离群值点后点的上下限 1使用示例 基础使用,Y为矩阵 X=1:5; Y=randn(100,5); Hdl1=violinChart(gca,X,Y,[0 0.447 0.741],0.6); X:横坐标 Y:数

  • 基于Matlab绘制超绚丽的烟花的过程详解

    目录 1.使用效果 2.随机点生成 3.图像膨胀 4.特效「风」模拟 5.级坐标变换 6.图像模糊及再映射 7.图像上色 8.完整代码 1.使用效果 2.随机点生成 我们要构造一个黑色背景,对其添加高斯噪声,然后依据阈值删掉部分噪声,生成一张随机点图片: % 构造黑色背景并生成白色杂点 blackPic=uint8(zeros(800,800)); distPic=imnoise(blackPic,'gaussian',0, 0.11); distPic(distPic<254)=0; 3.图像

  • 详解Matlab绘制3D玫瑰花的方法(内附旋转版本)

    目录 1.玫瑰花绘制 绘制效果 完整代码 2.月季花绘制 绘制效果 完整代码 3.玫瑰配色 4.旋转版本 1.玫瑰花绘制 绘制效果 完整代码 function drawrose grid on [x,t]=meshgrid((0:24)./24,(0:0.5:575)./575.*20.*pi+4*pi); p=(pi/2)*exp(-t./(8*pi)); change=sin(15*t)/150; u=1-(1-mod(3.6*t,2*pi)./pi).^4./2+change; y=2*(

  • 详解Matlab实现动态表白图的绘制

    目录 1.幸福和快乐的哲学追问 2.提前祝女朋友节日快乐 2.1 展现 2.2 代码 1.幸福和快乐的哲学追问 在过去的500年间,我们见证了一连串令人惊叹的革命.地球在生态和历史上都已经整合成一个单一的领域.经济呈现指数增长,今日人类所享有的财富在过去只有可能出现在童话里.而科学和工业革命也带给我们超人类的力量,以及几乎可以说无限的能源.不仅社会秩序完全改变,政治.日常生活和人类心理也彻底改观. 只不过,我们真的更快乐了吗?人类在过去5世纪间积蓄的财富,是不是真的让我们找到了新的满足感?有了取

  • 利用Matlab绘制好看的旋转九边形

    目录 PART.0 使用效果 PART.1 程序说明 PART.2 完整代码 PART.0 使用效果 PART.1 程序说明 这个代码主要复刻的Clayton Shonkwiler使用Wolfram绘制的作品(二十个旋转的正九变形),据说其灵感来源于Thomas Davis的一些作品,Clayton Shonkwiler的更多作品可以在这个地址查看 PART.2 完整代码 function nonagon20 % @author:slandarer % axes属性设置 ax=gca; hold

  • 利用Matlab绘制一个可爱的南瓜灯

    目录 效果及原理 原理 实现方法 完整代码 效果及原理 效果如下: 调一下数据还能改成三角眼: 原理 南瓜主体函数从知友 [九章算法] 的一张图而来,大体是瓜身瓜柄分段函数,然后绕着z轴旋转一周得到曲面,我对数值做了微调,原图及原始数据: 实现方法 这里我故意保留了网格让南瓜看起来有一点布娃娃的感觉,(大家也可以根据自己喜好改写,例如将’EdgeColor’设置为’none’并打个光啥的) % 构造网格 [t,p]=meshgrid(linspace(0,2*pi,200),linspace(0

  • Python&Matlab实现樱花的绘制

    目录 1.锦短情长 2. 一场樱花雨(Matlab) 3.樱花树(Python) 1.锦短情长 为什么选择这个标题,借鉴了一封情书里面的情长纸短,还吻你万千. 锦短情长 都只谓人走茶凉,怎感觉锦短情长? 一提起眼泪汪汪,是明月人心所向? 2. 一场樱花雨(Matlab) function pingba hold on,axis equal axis(0.5+[-10,50,0,50]) set(gca,'xtick',[],'ytick',[],'xcolor','w','ycolor','w'

  • 使用Matlab绘制七夕咕呱小青蛙

    目录 基础代码 动图生成代码 咕呱,咕呱,咕呱 咕呱,咕呱,咕呱 咕呱,咕呱,咕呱 七夕节到了还不快给你的朋友安排上这只咕呱小青蛙? 基础代码 function gugua ax=gca; ax.DataAspectRatio=[1 1 1]; ax.XLim=[-5 5]; ax.YLim=[-5 5]; ax.XColor='none'; ax.YColor='none'; ax.Color=[115,173,194]./255; hold on % hold(ax,'on') % ====

  • 利用Matlab绘制各类特殊图形的实例代码

    Matlab绘图介绍 强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数.此外,Matlab还提供了直接对图形句柄进行操作的低层绘图操作.这类操作将图形的每个图形元素(如坐标轴.曲线.文字等)看做一个独立的对象,系统给每个对象分配一个句柄,可以通过句柄对该图形元素进行操作,而不影响其他部分. Matlab绘制特殊图形 1. 绘制极坐标图 说明:使用polarplot函数绘制极

  • 利用Python Matlab绘制曲线图的简单实例

    目录 一.简介 二.绘制图形 1.第一个曲线图 2.第二个图形 3.第三个图形 4.第四个图形 5.画出指定区间的一个多项式函数: 总结 一.简介 我们在这里采用Python中的matplotlib来实现曲线图形的绘制.matplotlib是著名的python绘图库,它提供了一整套绘图API,十分适合交互式绘图. 二.绘制图形 1.第一个曲线图 代码: 具体的绘制的代码如下所示: import matplotlib.pyplot as plt import numpy as np r = np.

  • C语言编程使用MATLAB绘制冰墩墩

    目录 1 程序说明 椭圆形: 心形: 2 完整代码 不能放图,大家自行绘制试试看. 1 程序说明 这个程序就是用一系列椭圆,圆角矩形及心形拼在起,以下说明一下各部分怎么生成: 椭圆形: 椭圆形是用的如下椭圆数据生成函数生成数据点,之后再用fill函数绘制而成,其中Mu为椭圆中心点,Sigma为协方差矩阵,S为半径平方,pntNum是生成数据点个数: % 椭圆数据计算函数,输入协方差矩阵.中心点.半径生成椭圆数据 % 椭圆数据计算函数,输入协方差矩阵.中心点.半径生成椭圆数据 function [

  • 利用Matlab绘制地图的超详细教程

    目录 MappingToolbox工具箱安装 局部区域陆地绘制 映射贴图 纹理贴图 线路图绘制 usamap axesm 一些地图绘制可用简易函数 subplot tightmap 边框标签网格快速开关函数 colormap colorbar worldmap和usamap是axesm的子类,worldmap是用于生成世界地图坐标区域,usamap用于生成美国地图坐标区域,本文先在worldmap函数基础上讲解如何导入各种数据绘制各种类型图片,略提一下如何使用usamap,再讲解axesm的各种

  • Matlab绘制中国地图超全教程详解

    目录 各省边界线绘图 省份填色图 中国公路交通图 中国铁路交通图 中国河流图 组合美化图 美化图一 美化图二 依旧需要用到Mapping Toolbox不会安装的可以看我上一篇 虽然我们只读取shp文件,但需要保证文件夹里还有shx文件及dbf文件 各省边界线绘图 provinces=shaperead('bou2_4l.shp','UseGeoCoords',true); % 绘图 worldmap('China'); geoshow(provinces) 省份填色图 provinces=sh

  • 利用Matlab绘制一款专属进度条

    目录 1.使用效果 2.制作历程 3.函数用法 4.工具函数完整代码 waitBar_SL1.m waitBar_SL2.m waitBar_SL3.m waitBar_SL4.m 5.下载地址 1.使用效果 2.制作历程 首先我有个程序需要用到进度条,我首先试了一下MATLAB自带的进度条: bar=waitbar(0,'读取数据中...'); % waitbar显示进度条 for i=1:1000 A(i)=rand(); str=['计算中...',num2str(100*i/1000),

  • Matlab绘制散点密度图的教程详解

    目录 效果 1工具函数完整代码 2参数说明 3使用方式 3.1散点赋色 3.2等高线图 3.3带直方图的散点图 3.4带直方图的等高线图 4使用方式扩展–与ggplot修饰器联动 效果 原理也很简单,通过matlab自带的ksdensity获得网格每一点密度,通过密度拟合曲面,再计算每个数据点对应的概率,并将概率映射到颜色即可为了怕大家找不到函数这次工具函数放到最前面 1工具函数完整代码 function [CData,h,XMesh,YMesh,ZMesh,colorList]=density

随机推荐