怎么利用Matlab绘制一个可爱的南瓜灯
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍怎么利用Matlab绘制一个可爱的南瓜灯,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!效果及原理效果如下:调一下数据还能改成三角眼:原理南瓜主体函数从知友 [九
千家信息网最后更新 2026年11月01日怎么利用Matlab绘制一个可爱的南瓜灯
这篇文章主要介绍怎么利用Matlab绘制一个可爱的南瓜灯,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
效果及原理
效果如下:
调一下数据还能改成三角眼:
原理
南瓜主体函数从知友 [九章算法] 的一张图而来,大体是瓜身瓜柄分段函数,然后绕着z轴旋转一周得到曲面,我对数值做了微调,原图及原始数据:
实现方法
这里我故意保留了网格让南瓜看起来有一点布娃娃的感觉,(大家也可以根据自己喜好改写,例如将’EdgeColor’设置为’none’并打个光啥的)
% 构造网格[t,p]=meshgrid(linspace(0,2*pi,200),linspace(0,pi-.05,200));% 二元分段函数foutline=@(t,p)(p<=.14).*90.*cos(7.*p)+(p>.14).*(cos(20.*t)+70).*(p.*(pi-p+.1)).^.2;% 球面坐标转化为X,Y,Zh=cos(p).*foutline(t,p);R=sin(p).*foutline(t,p);R=R;X=cos(t).*R;Y=sin(t).*R;% 颜色矩阵构造CMap=ones([size(t),3]);tMap=ones(size(t));c1=[253,158,3]./255;c2=[76,103,86]./255;for i=1:3 tMap(:,:)=c1(i); tMap(p<=.14)=c2(i); CMap(:,:,i)=tMap;endfigure()surf(X,Y,h,'CData',CMap,'EdgeColor',[0,0,0],'EdgeAlpha',.2)
眼睛嘴巴部分:
这部分我就将一部分曲面上的点设置为nan,绘制出来的图像相对应地方就是空缺:
% 画个嘴巴mask(maskX>50&maskX<100&maskY>130&maskY<140)=nan;% 矩形眼睛mask(maskX>45&maskX<65&maskY>90&maskY<100)=nan;mask(maskX>85&maskX<105&maskY>90&maskY<100)=nan;% 三角形眼睛% mask(maskX>45&maskX<70&maskY>90&maskY<100)=nan;% mask(maskX>80&maskX<105&maskY>90&maskY<100)=nan;% mask(maskX>45&maskX<70&maskY>90&maskY<100&(maskX-maskY>-35))=1;% mask(maskX>45&maskX<70&maskY>90&maskY<100&(maskX-maskY(end:-1:1,:)<-55))=1;% mask(maskX>80&maskX<105&maskY>90&maskY<100&(maskX-maskY>5))=1;% mask(maskX>80&maskX<105&maskY>90&maskY<100&(maskX-maskY(end:-1:1,:)<-15))=1;% 球面坐标转化为X,Y,Zh=cos(p).*foutline(t,p);R=sin(p).*foutline(t,p);R=R.*mask;X=cos(t).*R;Y=sin(t).*R;
发光:
为了模拟发光,我在南瓜内部绘制了一个小一圈的南瓜并设置为灯光的颜色:
% 绘制一个小一圈的南瓜头假装光源h=cos(p).*foutline(t,p).*0.95;R=sin(p).*foutline(t,p).*0.95;X=cos(t).*R;Y=sin(t).*R;surf(X,Y,h,'FaceColor',[248,240,186]./255,'EdgeColor','none')
完整代码
function pumpkinclc;clear;% 构造网格[t,p]=meshgrid(linspace(0,2*pi,200),linspace(0,pi-.05,200));% 二元分段函数foutline=@(t,p)(p<=.14).*90.*cos(7.*p)+(p>.14).*(cos(20.*t)+70).*(p.*(pi-p+.1)).^.2;mask=ones(size(t));[maskX,maskY]=meshgrid(1:size(t,1),1:size(t,2));% 画个嘴巴mask(maskX>50&maskX<100&maskY>130&maskY<140)=nan;% 矩形眼睛mask(maskX>45&maskX<65&maskY>90&maskY<100)=nan;mask(maskX>85&maskX<105&maskY>90&maskY<100)=nan;% 三角形眼睛% mask(maskX>45&maskX<70&maskY>90&maskY<100)=nan;% mask(maskX>80&maskX<105&maskY>90&maskY<100)=nan;% mask(maskX>45&maskX<70&maskY>90&maskY<100&(maskX-maskY>-35))=1;% mask(maskX>45&maskX<70&maskY>90&maskY<100&(maskX-maskY(end:-1:1,:)<-55))=1;% mask(maskX>80&maskX<105&maskY>90&maskY<100&(maskX-maskY>5))=1;% mask(maskX>80&maskX<105&maskY>90&maskY<100&(maskX-maskY(end:-1:1,:)<-15))=1;% 球面坐标转化为X,Y,Zh=cos(p).*foutline(t,p);R=sin(p).*foutline(t,p);R=R.*mask;X=cos(t).*R;Y=sin(t).*R;% 颜色矩阵构造CMap=ones([size(t),3]);tMap=ones(size(t));c1=[253,158,3]./255;c2=[76,103,86]./255;for i=1:3 tMap(:,:)=c1(i); tMap(p<=.14)=c2(i); CMap(:,:,i)=tMap;endfigure()surf(X,Y,h,'CData',CMap,'EdgeColor',[0,0,0],'EdgeAlpha',.2)ax=gca;hold(ax,'on')% ax.Color=[0 0 0];% 绘制一个小一圈的南瓜头假装光源h=cos(p).*foutline(t,p).*0.95;R=sin(p).*foutline(t,p).*0.95;X=cos(t).*R;Y=sin(t).*R;surf(X,Y,h,'FaceColor',[248,240,186]./255,'EdgeColor','none')ax.View=[-137.3000 13.9844];end
以上是"怎么利用Matlab绘制一个可爱的南瓜灯"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
南瓜
函数
嘴巴
坐标
球面
网格
颜色
小一
可爱
光源
内容
原理
效果
数据
曲面
矩阵
篇文章
原始
主体
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
咖啡网
互联网科技
上海卓越科技互联网
科技互联网产品
互联网和科技创新
狮子座互联网科技
有木互联网科技
深圳天众互联网科技公司
互联网科技logo
润盈互联网科技
安控科技rtu产品工业互联网
华服互联网科技官网
消费医药和互联网科技
坤平互联网科技
互联网新科技动漫ppt素材
互联网科技大赛获奖感言
互联网领先科技宣传片
郑州欣桑互联网科技有限公司
互联网硬科技公司
互联网领先科技成果宣传视频
北京路客互联网科技有限公司
美国互联网科技
互联网 的科技创新
远信互联网科技
猫创互联网科技
互联网系的金融科技公司
互联网金融科技名词解释
工业互联网山东科技大学
2021互联网科技公司排名
互联网科技平台产品运营