iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Matlab如何实现有雪花飘落的圣诞树
  • 938
分享到

Matlab如何实现有雪花飘落的圣诞树

2023-07-04 19:07:16 938人浏览 泡泡鱼
摘要

本篇内容主要讲解“Matlab如何实现有雪花飘落的圣诞树”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Matlab如何实现有雪花飘落的圣诞树”吧!圣诞树及礼物绘制% 生成树本体曲面tr

本篇内容主要讲解“Matlab如何实现有雪花飘落的圣诞树”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Matlab如何实现有雪花飘落的圣诞树”吧!

圣诞树及礼物绘制

% 生成树本体曲面treeFunc=@(h)[h(1),h(h>0&h<=3).*0+1.5,8-(h(h>3)-3).*0.3636];[X,Y,Z]=cylinder(treeFunc(0:0.2:25));% 随机移动树冠上点的位置Z=Z.*25;cnt1=1:21;cnt2=16:126;angle=atan(Y(cnt2,cnt1)./X(cnt2,cnt1));treeDiffusion=rand(111,21)-0.5;X(cnt2,cnt1)=X(cnt2,cnt1)+cos(angle).*treeDiffusion;Y(cnt2,cnt1)=Y(cnt2,cnt1)+sin(angle).*treeDiffusion;Z(cnt2,cnt1)=Z(cnt2,cnt1)+(rand(111,21)-0.5).*0.5;X(:,end)=X(:,1);Y(:,end)=Y(:,1);Z(:,end)=Z(:,1);% 绘制圣诞树surfl(X,Y,Z,'light');hold on% 绘制礼物drawPresent(2,-4,0,3,3,2);drawPresent(-4,3,0,2,3,1.5);drawPresent(5,3,0,4,3,3);drawPresent(-7,-5,0,5,3,1);drawPresent(-9,-6,0,2,2,2);drawPresent(0,4,0,4,3,3);    function drawPresent(dx,dy,dz,scalex,scaley,scalez)        presentX=[0.5 0.5 0.5 0.5 0.5; 0 1 1 0 0; 0 1 1 0 0; 0 1 1 0 0; 0.5 0.5 0.5 0.5 0.5];        presentY=[0.5 0.5 0.5 0.5 0.5; 0 0 1 1 0; 0 0 1 1 0; 0 0 1 1 0; 0.5 0.5 0.5 0.5 0.5];        presentZ=[0 0 0 0 0;0 0 0 0 0; 0.5 0.5 0.5 0.5 0.5; 1 1 1 1 1; 1 1 1 1 1];        randColORMap=cat(3,repmat(rand,[5,5])./2+.5,repmat(rand,[5,5])./2+.5,repmat(rand,[5,5])./2+.5);        surf((presentX*scalex+dx),(presentY*scaley+dy), (presentZ*scalez+dz),'CData',randColorMap);        shading interp    end

Matlab如何实现有雪花飘落的圣诞树

基础修饰

ax=GCa;hold on;set(gcf,'Color',[22,32,51]./255);r=(0.0430:(0.2061/50):0.2491)';g=(0.2969:(0.4012/50):0.6981)';b=(0.0625:(0.2696/50):0.3321)';Cmap=[r,g,b];Cmap(1:6,:)=Cmap(1:6,:).*0+[77,63,5]/265;% 绘制标题annotation('textbox',[.45,.86,.1,.1],'String','Merry Christmas','fontsize',23,...    'fontweight','Bold','FontName','Cambria','HorizontalAlignment','center','Color','w','EdgeColor','none')% 当前坐标区域修饰set(ax,'XLim',[-10 10],'YLim',[-10,10],'ZLim',[0,30],'PlotBoxAspectRatio',[1,1,1.2],...    'XColor','none','YColor','none','ZColor','none','Color',[22,32,51]./255,'View',[-37.5,4],...    'Colormap',Cmap,'Position',[0,0,1,.9],'Tag',char([100,105,115,112,40,39,20316,32773,...    58,115,108,97,110,100,97,114,101,114,39,41]));lighting phong;shading interp;eval(ax.Tag)

Matlab如何实现有雪花飘落的圣诞树

绘制星星和光晕

% 绘制星星plot3(0,0,25.6,'p', 'MarkerSize',24,'MarkerFaceColor',[255,223,153]/255,'MarkerEdgeColor','none','LineWidth', 1);starLightHdl=scatter3(0,0,25,6000,'o','MarkerFaceColor','w','MarkerEdgeColor','w','MarkerEdgeAlpha',0,'MarkerFaceAlpha', 0.1);

Matlab如何实现有雪花飘落的圣诞树

绘制彩灯

% 绘制圣诞树上的彩灯lightFuncX=@(h,r,a,z) (h-z)./h.*r.*cos(a.*z);lightFuncY=@(h,r,a,z) (h-z)./h.*r.*sin(a.*z);h=25;r=8;lightZ1=linspace(4,25-4,200);a1=0.3*pi;lightX1=lightFuncX(h,r*1.4,a1,lightZ1);lightY1=lightFuncY(h,r*1.4,a1,lightZ1);plot3(lightX1,lightY1,lightZ1+.1,'.','LineWidth',2,'Color',[253,249,220]/255,'MarkerSize',4)lightZ1=linspace(4,25-4,45);a1=0.3*pi;lightX1=lightFuncX(h,r*1.2,a1,lightZ1);lightY1=lightFuncY(h,r*1.2,a1,lightZ1);scatter3(lightX1,lightY1,lightZ1+.1,300,'Marker','o','MarkerEdgeColor','none',...    'MarkerFaceColor',[253,249,220]/255,'MarkerFaceAlpha',.08)scatter3(lightX1,lightY1,lightZ1+.1,50,'Marker','o','MarkerEdgeColor','none',...    'MarkerFaceColor',[231,217,129]./255,'MarkerFaceAlpha',.95)lightZ1=linspace(4,25-5,100);a1=-0.15*pi;lightX1=lightFuncX(h,r*1.2,a1,lightZ1);lightY1=lightFuncY(h,r*1.2,a1,lightZ1);plot3(lightX1,lightY1,lightZ1+.1,'.','LineWidth',2,'Color','w','MarkerSize',4)lightZ1=linspace(4,25-6,17);a1=-0.15*pi;lightX1=lightFuncX(h,r*1.2,a1,lightZ1);lightY1=lightFuncY(h,r*1.2,a1,lightZ1);scatter3(lightX1,lightY1,lightZ1+.1,300,'Marker','o','MarkerEdgeColor','none',...    'MarkerFaceColor',[253,249,220]/255,'MarkerFaceAlpha',.08)scatter3(lightX1,lightY1,lightZ1+.1,70,'Marker','o','MarkerEdgeColor','none',...    'MarkerFaceColor','w','MarkerFaceAlpha',.8)

Matlab如何实现有雪花飘落的圣诞树

绘制雪花

% 绘制雪花snowXYZ1=rand(70,3);snowXYZ1(:,1:2)=snowXYZ1(:,1:2).*26-13;snowXYZ1(:,3)=snowXYZ1(:,3).*30;snowXYZ2=rand(90,3);snowXYZ2(:,1:2)=snowXYZ2(:,1:2).*26-13;snowXYZ2(:,3)=snowXYZ2(:,3).*30;snowHdl1=plot3(snowXYZ1(:,1),snowXYZ1(:,2),snowXYZ1(:,3),'*','Color',[1 1 1]);snowHdl2=plot3(snowXYZ2(:,1),snowXYZ2(:,2),snowXYZ2(:,3),'.','Color',[.6,.6,.6]);

Matlab如何实现有雪花飘落的圣诞树

动态变化实现

% 旋转图像、雪花飘落for i=1:1e8    starLightHdl.SizeData=6000+sin(i/5).*1000;    snowXYZ1(:,3)=snowXYZ1(:,3)-.1;snowXYZ2(:,3)=snowXYZ2(:,3)-.01;    snowXYZ1(snowXYZ1(:,3)<0,3)=30;snowXYZ2(snowXYZ2(:,3)<0,3)=30;    snowHdl1.XData=snowXYZ1(:,1);snowHdl1.YData=snowXYZ1(:,2);snowHdl1.ZData=snowXYZ1(:,3);    snowHdl2.XData=snowXYZ2(:,1);snowHdl2.YData=snowXYZ2(:,2);snowHdl2.ZData=snowXYZ2(:,3);    view([i,4]);    drawnow;pause(.05)end

Matlab如何实现有雪花飘落的圣诞树

完整代码

function XmasTree2022% @author:slandarer% 生成树本体曲面treeFunc=@(h)[h(1),h(h>0&h<=3).*0+1.5,8-(h(h>3)-3).*0.3636];[X,Y,Z]=cylinder(treeFunc(0:0.2:25));% 随机移动树冠上点的位置Z=Z.*25;cnt1=1:21;cnt2=16:126;angle=atan(Y(cnt2,cnt1)./X(cnt2,cnt1));treeDiffusion=rand(111,21)-0.5;X(cnt2,cnt1)=X(cnt2,cnt1)+cos(angle).*treeDiffusion;Y(cnt2,cnt1)=Y(cnt2,cnt1)+sin(angle).*treeDiffusion;Z(cnt2,cnt1)=Z(cnt2,cnt1)+(rand(111,21)-0.5).*0.5;X(:,end)=X(:,1);Y(:,end)=Y(:,1);Z(:,end)=Z(:,1);% 绘制圣诞树ax=gca;hold on;set(gcf,'Color',[22,32,51]./255);surfl(X,Y,Z,'light');r=(0.0430:(0.2061/50):0.2491)';g=(0.2969:(0.4012/50):0.6981)';b=(0.0625:(0.2696/50):0.3321)';Cmap=[r,g,b];Cmap(1:6,:)=Cmap(1:6,:).*0+[77,63,5]/265;% 绘制标题annotation('textbox',[.45,.86,.1,.1],'String','Merry Christmas','fontsize',23,...    'fontweight','Bold','FontName','Cambria','HorizontalAlignment','center','Color','w','EdgeColor','none')% 当前坐标区域修饰set(ax,'XLim',[-10 10],'YLim',[-10,10],'ZLim',[0,30],'PlotBoxAspectRatio',[1,1,1.2],...    'XColor','none','YColor','none','ZColor','none','Color',[22,32,51]./255,'View',[-37.5,4],...    'Colormap',Cmap,'Position',[0,0,1,.9],'Tag',char([100,105,115,112,40,39,20316,32773,...    58,115,108,97,110,100,97,114,101,114,39,41]));lighting phong;shading interp;eval(ax.Tag)% 绘制星星plot3(0,0,25.6,'p', 'MarkerSize',24,'MarkerFaceColor',[255,223,153]/255,'MarkerEdgeColor','none','LineWidth', 1);starLightHdl=scatter3(0,0,25,6000,'o','MarkerFaceColor','w','MarkerEdgeColor','w','MarkerEdgeAlpha',0,'MarkerFaceAlpha', 0.1);% 绘制圣诞树上的彩灯lightFuncX=@(h,r,a,z) (h-z)./h.*r.*cos(a.*z);lightFuncY=@(h,r,a,z) (h-z)./h.*r.*sin(a.*z);h=25;r=8;lightZ1=linspace(4,25-4,200);a1=0.3*pi;lightX1=lightFuncX(h,r*1.4,a1,lightZ1);lightY1=lightFuncY(h,r*1.4,a1,lightZ1);plot3(lightX1,lightY1,lightZ1+.1,'.','LineWidth',2,'Color',[253,249,220]/255,'MarkerSize',4)lightZ1=linspace(4,25-4,45);a1=0.3*pi;lightX1=lightFuncX(h,r*1.2,a1,lightZ1);lightY1=lightFuncY(h,r*1.2,a1,lightZ1);scatter3(lightX1,lightY1,lightZ1+.1,300,'Marker','o','MarkerEdgeColor','none',...    'MarkerFaceColor',[253,249,220]/255,'MarkerFaceAlpha',.08)scatter3(lightX1,lightY1,lightZ1+.1,50,'Marker','o','MarkerEdgeColor','none',...    'MarkerFaceColor',[231,217,129]./255,'MarkerFaceAlpha',.95)lightZ1=linspace(4,25-5,100);a1=-0.15*pi;lightX1=lightFuncX(h,r*1.2,a1,lightZ1);lightY1=lightFuncY(h,r*1.2,a1,lightZ1);plot3(lightX1,lightY1,lightZ1+.1,'.','LineWidth',2,'Color','w','MarkerSize',4)lightZ1=linspace(4,25-6,17);a1=-0.15*pi;lightX1=lightFuncX(h,r*1.2,a1,lightZ1);lightY1=lightFuncY(h,r*1.2,a1,lightZ1);scatter3(lightX1,lightY1,lightZ1+.1,300,'Marker','o','MarkerEdgeColor','none',...    'MarkerFaceColor',[253,249,220]/255,'MarkerFaceAlpha',.08)scatter3(lightX1,lightY1,lightZ1+.1,70,'Marker','o','MarkerEdgeColor','none',...    'MarkerFaceColor','w','MarkerFaceAlpha',.8)% 绘制礼物drawPresent(2,-4,0,3,3,2);drawPresent(-4,3,0,2,3,1.5);drawPresent(5,3,0,4,3,3);drawPresent(-7,-5,0,5,3,1);drawPresent(-9,-6,0,2,2,2);drawPresent(0,4,0,4,3,3);    function drawPresent(dx,dy,dz,scalex,scaley,scalez)        presentX=[0.5 0.5 0.5 0.5 0.5; 0 1 1 0 0; 0 1 1 0 0; 0 1 1 0 0; 0.5 0.5 0.5 0.5 0.5];        presentY=[0.5 0.5 0.5 0.5 0.5; 0 0 1 1 0; 0 0 1 1 0; 0 0 1 1 0; 0.5 0.5 0.5 0.5 0.5];        presentZ=[0 0 0 0 0;0 0 0 0 0; 0.5 0.5 0.5 0.5 0.5; 1 1 1 1 1; 1 1 1 1 1];        randColorMap=cat(3,repmat(rand,[5,5])./2+.5,repmat(rand,[5,5])./2+.5,repmat(rand,[5,5])./2+.5);        surf((presentX*scalex+dx),(presentY*scaley+dy), (presentZ*scalez+dz),'CData',randColorMap);        shading interp    end% 绘制雪花snowXYZ1=rand(70,3);snowXYZ1(:,1:2)=snowXYZ1(:,1:2).*26-13;snowXYZ1(:,3)=snowXYZ1(:,3).*30;snowXYZ2=rand(90,3);snowXYZ2(:,1:2)=snowXYZ2(:,1:2).*26-13;snowXYZ2(:,3)=snowXYZ2(:,3).*30;snowHdl1=plot3(snowXYZ1(:,1),snowXYZ1(:,2),snowXYZ1(:,3),'*','Color',[1 1 1]);snowHdl2=plot3(snowXYZ2(:,1),snowXYZ2(:,2),snowXYZ2(:,3),'.','Color',[.6,.6,.6]);% 旋转图像、雪花飘落for i=1:1e8    starLightHdl.SizeData=6000+sin(i/5).*1000;    snowXYZ1(:,3)=snowXYZ1(:,3)-.1;snowXYZ2(:,3)=snowXYZ2(:,3)-.01;    snowXYZ1(snowXYZ1(:,3)<0,3)=30;snowXYZ2(snowXYZ2(:,3)<0,3)=30;    snowHdl1.XData=snowXYZ1(:,1);snowHdl1.YData=snowXYZ1(:,2);snowHdl1.ZData=snowXYZ1(:,3);    snowHdl2.XData=snowXYZ2(:,1);snowHdl2.YData=snowXYZ2(:,2);snowHdl2.ZData=snowXYZ2(:,3);    view([i,4]);    drawnow;pause(.05)endend

值得一提的是,若是将30行左右

&lsquo;Colormap&rsquo;,Cmap

删掉则效果如下:

Matlab如何实现有雪花飘落的圣诞树

若是将将Cmap改为其他颜色,例如pink

&lsquo;Colormap&rsquo;,pink

则效果如下(pink,bone,copper,cool)

Matlab如何实现有雪花飘落的圣诞树

Matlab如何实现有雪花飘落的圣诞树

Matlab如何实现有雪花飘落的圣诞树

Matlab如何实现有雪花飘落的圣诞树

到此,相信大家对“Matlab如何实现有雪花飘落的圣诞树”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: Matlab如何实现有雪花飘落的圣诞树

本文链接: https://www.lsjlt.com/news/347065.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Matlab如何实现有雪花飘落的圣诞树
    本篇内容主要讲解“Matlab如何实现有雪花飘落的圣诞树”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Matlab如何实现有雪花飘落的圣诞树”吧!圣诞树及礼物绘制% 生成树本体曲面tr...
    99+
    2023-07-04
  • CSS3如何实现雪花飘落特效
    这篇文章主要介绍“CSS3如何实现雪花飘落特效”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“CSS3如何实现雪花飘落特效”文章能帮助大家解决问题。在CSS3中我们可以使用animation属性来创建...
    99+
    2023-07-04
  • JavaScript如何实现雪花飘落效果
    本篇内容主要讲解“JavaScript如何实现雪花飘落效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript如何实现雪花飘落效果”吧!效果图:代码:!DOCTYPE h...
    99+
    2023-07-04
  • HTML5中canvas如何实现雪花飘落特效
    这篇文章给大家分享的是有关HTML5中canvas如何实现雪花飘落特效的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。最终效果图如下: 图1一、需求分析圆形雪花本示例中雪花形状使用圆形雪花数量固定根据图1...
    99+
    2023-06-09
  • JS和JQuery如何实现雪花飘落效果
    这篇文章主要为大家展示了“JS和JQuery如何实现雪花飘落效果”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JS和JQuery如何实现雪花飘落效果”这篇文章吧...
    99+
    2024-04-02
  • JavaScript如何实现动态网页飘落的雪花
    这篇文章主要介绍了JavaScript如何实现动态网页飘落的雪花的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript如何实现动态网页飘落的雪花文章都会有所收获,下面我们一起来看看吧。设计思路:定义...
    99+
    2023-07-02
  • JavaScript实现动态网页飘落的雪花
    本文实例为大家分享了JavaScript实现动态网页飘落雪花的具体代码,供大家参考,具体内容如下 设计思路: 1.定义一定数量的雪花层,每层包含一个雪花; 2.雪花水平方向左右摇摆则...
    99+
    2024-04-02
  • 怎么用CSS3实现雪花飘落的效果
    这篇文章将为大家详细讲解有关怎么用CSS3实现雪花飘落的效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。   我们可以根据自己想要的动画效果来设置动画,比如在本例中:...
    99+
    2024-04-02
  • jQuery实现雪花飘落效果的示例分析
    这篇文章主要介绍jQuery实现雪花飘落效果的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!示例:<!DOCTYPE html> <html>...
    99+
    2024-04-02
  • HTML+CSS+JS如何实现雪花飘扬
    小编给大家分享一下HTML+CSS+JS如何实现雪花飘扬,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!很多南方的小伙伴可能没怎么见过或者从来没见过下雪,今天我给大家带来一个小Demo,模拟...
    99+
    2024-04-02
  • 如何用C语言实现圣诞树
    这篇文章主要介绍“如何用C语言实现圣诞树”,在日常操作中,相信很多人在如何用C语言实现圣诞树问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何用C语言实现圣诞树”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-22
  • HTML5+Webkit如何实现树叶飘落动画
    这篇文章将为大家详细讲解有关HTML5+Webkit如何实现树叶飘落动画,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。实现如图所示的东西效果(落叶下落): ht...
    99+
    2024-04-02
  • Python实现绘制圣诞树和烟花的示例代码
    目录序言圣诞树效果展示代码展示圣诞树上加烟花效果展示代码展示序言 这不是圣诞节快到了,准备让让女朋友开心开心,也算是亲手做的,稍稍花了点心思。 话不多说,咱们直接来展示吧,学会了赶紧...
    99+
    2022-12-08
    Python圣诞树 烟花 Python圣诞树 Python烟花
  • C语言基于graphics.h如何实现圣诞树
    这篇文章主要介绍C语言基于graphics.h如何实现圣诞树,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!头文件 icon.h:#pragma once#ifndef _ICON_H_#defin...
    99+
    2023-06-22
  • C语言如何实现一个闪烁的圣诞树
    小编给大家分享一下C语言如何实现一个闪烁的圣诞树,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!效果图图1 圣诞树下面来看下源码,如下所示:#include&nbs...
    99+
    2023-06-22
  • 如何使用java实现双层圣诞树加修饰
    小编给大家分享一下如何使用java实现双层圣诞树加修饰,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!A:有咋样的实力可以写出这个代码?B:会for循环就好A:只要...
    99+
    2023-06-22
  • 如何用Python实习一棵圣诞树的效果
    这篇文章主要介绍了如何用Python实习一棵圣诞树的效果,具有一定借鉴价值,需要的朋友可以参考下。下面就和我一起来看看吧。实图:效果如下:Python实现的源代码:from random import rand...
    99+
    2023-06-02
  • Java如何实现雪花算法的原理
    这篇文章主要介绍了Java如何实现雪花算法的原理,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。java基本数据类型有哪些Java的基本数据类型分为:1、整数类型,用来表示整数...
    99+
    2023-06-14
  • Matlab如何实现绘制有气泡感的网络图
    这篇文章主要介绍“Matlab如何实现绘制有气泡感的网络图”,在日常操作中,相信很多人在Matlab如何实现绘制有气泡感的网络图问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Matlab如何实现绘制有气泡感的...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作