iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么使用Matlab制作简单的粒子圣诞树
  • 392
分享到

怎么使用Matlab制作简单的粒子圣诞树

2023-07-04 20:07:40 392人浏览 独家记忆
摘要

这篇“怎么使用Matlab制作简单的粒子圣诞树”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用Matlab制作简单的粒

这篇“怎么使用Matlab制作简单的粒子圣诞树”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用Matlab制作简单的粒子圣诞树”文章吧。

效果图:

怎么使用Matlab制作简单的粒子圣诞树

怎么使用Matlab制作简单的粒子圣诞树

这期就是非常简单的三个图形组合:

圣诞树主体

% 圣诞树形状生成函数h0=25;r0=12;a0=.5.*pi;XFunc=@(h,r,a,z) (h-z)./h.*r.*cos(a.*z);YFunc=@(h,r,a,z) (h-z)./h.*r.*sin(a.*z);ZFunc=@(h,r,z) z+sqrt(12^2-((h-z)./h.*r).^2);% 生成最外圈散点Z0=linspace(0,12.5,150);X0=XFunc(h0,r0,a0,Z0);Y0=YFunc(h0,r0,a0,Z0);% 生成中心点ZC=ZFunc(h0,r0,Z0);t0=linspace(.05,1,25)';% 生成树枝上的散点treeXYZ=zeros([length(Z0)*length(t0),3]);for i=1:length(Z0)    treeXYZ((i-1)*length(t0)+1:i*length(t0),:)=...        [0,0,ZC(i)]+[X0(i),Y0(i),Z0(i)-ZC(i)].*t0;end% 绘制圣诞树treeXYZ=treeXYZ+rand(size(treeXYZ))./3;treeCData=repmat([0,235,81]./255,[length(Z0)*length(t0),1]);treeCData=treeCData+rand(size(treeXYZ))./2;treeCData(treeCData>1)=1;scatter3(treeXYZ(:,1),treeXYZ(:,2),treeXYZ(:,3)-3,3,'o','filled','CData',treeCData,...    'MarkerFaceAlpha',.7,'MarkerEdgeColor','none')

怎么使用Matlab制作简单的粒子圣诞树

主体就是锥形螺旋线和中轴之间连线上取的一些散点:

怎么使用Matlab制作简单的粒子圣诞树

背景修饰

ax=GCa;set(gcf,'Color',[22,32,51]./255);% 坐标区域修饰set(ax,'XLim',[-27 27],'YLim',[-27,27],'ZLim',[-9,28],'PlotBoxAspectRatio',[1,1,.8],...    'XColor','none','YColor','none','ZColor','none','Color',[22,32,51]./255,'View',[-37.5,19.5],...    'Position',[-.5,-.2,2,1.4],'Tag',char([100,105,115,112,40,39,20316,32773,...    58,115,108,97,110,100,97,114,101,114,39,41]));eval(ax.Tag)

怎么使用Matlab制作简单的粒子圣诞树

绘制地面

这里将距离中心点的距离映射为余弦函数:

% 绘制地面[surfX,surfY]=meshgrid(linspace(-25,25,60));surfZ=cos(hypot(surfX,surfY))-5;surfZ=surfZ+rand(size(surfX)).*1.2;surfX=surfX+rand(size(surfX))./1.8;surfY=surfY+rand(size(surfX))./1.8;scatter3(surfX,surfY,surfZ,3,'o','filled','CData',[91,131,253]./255,...    'MarkerFaceAlpha',.4,'MarkerEdgeColor','none')

怎么使用Matlab制作简单的粒子圣诞树

水晶球

就是一个半透明的球:

% 绘制水晶球[ballX,ballY,ballZ]=sphere(20);surf(ballX.*18,ballY.*18,ballZ.*15+8,'EdgeColor','none','FaceAlpha',.1);colORMap(gray);light;lighting phong;shading interp;

怎么使用Matlab制作简单的粒子圣诞树

添加雪花并旋转视角

% 绘制雪花snowXYZ1=rand(27,3);snowXYZ1(:,1:2)=snowXYZ1(:,1:2).*50-25;snowXYZ1(:,3)=snowXYZ1(:,3).*30;snowXYZ2=rand(60,3);snowXYZ2(:,1:2)=snowXYZ2(:,1:2).*50-25;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    snowXYZ1(:,3)=snowXYZ1(:,3)-.1;snowXYZ2(:,3)=snowXYZ2(:,3)-.01;    snowXYZ1(snowXYZ1(:,3)<-5,3)=30;snowXYZ2(snowXYZ2(:,3)<-5,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,19.5]);    drawnow;pause(.05)end

怎么使用Matlab制作简单的粒子圣诞树

完整代码

function XmasTree2022_2% @author:slandarer% 圣诞树形状生成函数h0=25;r0=12;a0=.5.*pi;XFunc=@(h,r,a,z) (h-z)./h.*r.*cos(a.*z);YFunc=@(h,r,a,z) (h-z)./h.*r.*sin(a.*z);ZFunc=@(h,r,z) z+sqrt(12^2-((h-z)./h.*r).^2);% 生成最外圈散点Z0=linspace(0,12.5,150);X0=XFunc(h0,r0,a0,Z0);Y0=YFunc(h0,r0,a0,Z0);% 生成中心点ZC=ZFunc(h0,r0,Z0);t0=linspace(.05,1,25)';% 生成树枝上的散点treeXYZ=zeros([length(Z0)*length(t0),3]);for i=1:length(Z0)    treeXYZ((i-1)*length(t0)+1:i*length(t0),:)=...        [0,0,ZC(i)]+[X0(i),Y0(i),Z0(i)-ZC(i)].*t0;endax=gca;hold on;set(gcf,'Color',[22,32,51]./255);% 绘制圣诞树treeXYZ=treeXYZ+rand(size(treeXYZ))./3;treeCData=repmat([0,235,81]./255,[length(Z0)*length(t0),1]);treeCData=treeCData+rand(size(treeXYZ))./2;treeCData(treeCData>1)=1;scatter3(treeXYZ(:,1),treeXYZ(:,2),treeXYZ(:,3)-3,3,'o','filled','CData',treeCData,...    'MarkerFaceAlpha',.7,'MarkerEdgeColor','none')% 绘制水晶球[ballX,ballY,ballZ]=sphere(20);surf(ballX.*18,ballY.*18,ballZ.*15+8,'EdgeColor','none','FaceAlpha',.1);colormap(gray);light;lighting phong;shading interp;% 绘制地面[surfX,surfY]=meshgrid(linspace(-25,25,60));surfZ=cos(hypot(surfX,surfY))-5;surfZ=surfZ+rand(size(surfX)).*1.2;surfX=surfX+rand(size(surfX))./1.8;surfY=surfY+rand(size(surfX))./1.8;scatter3(surfX,surfY,surfZ,3,'o','filled','CData',[91,131,253]./255,...    'MarkerFaceAlpha',.4,'MarkerEdgeColor','none')% 坐标区域修饰set(ax,'XLim',[-27 27],'YLim',[-27,27],'ZLim',[-9,28],'PlotBoxAspectRatio',[1,1,.8],...    'XColor','none','YColor','none','ZColor','none','Color',[22,32,51]./255,'View',[-37.5,19.5],...    'Position',[-.5,-.2,2,1.4],'Tag',char([100,105,115,112,40,39,20316,32773,...    58,115,108,97,110,100,97,114,101,114,39,41]));eval(ax.Tag)% 绘制雪花snowXYZ1=rand(27,3);snowXYZ1(:,1:2)=snowXYZ1(:,1:2).*50-25;snowXYZ1(:,3)=snowXYZ1(:,3).*30;snowXYZ2=rand(60,3);snowXYZ2(:,1:2)=snowXYZ2(:,1:2).*50-25;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    snowXYZ1(:,3)=snowXYZ1(:,3)-.1;snowXYZ2(:,3)=snowXYZ2(:,3)-.01;    snowXYZ1(snowXYZ1(:,3)<-5,3)=30;snowXYZ2(snowXYZ2(:,3)<-5,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,19.5]);    drawnow;pause(.05)endend

以上就是关于“怎么使用Matlab制作简单的粒子圣诞树”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: 怎么使用Matlab制作简单的粒子圣诞树

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

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

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

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

下载Word文档
猜你喜欢
  • 怎么使用Matlab制作简单的粒子圣诞树
    这篇“怎么使用Matlab制作简单的粒子圣诞树”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么使用Matlab制作简单的粒...
    99+
    2023-07-04
  • 利用Matlab制作一个贼简单的粒子圣诞树
    目录圣诞树主体背景修饰绘制地面水晶球添加雪花并旋转视角完整代码上一期圣诞树有些人说代码太复杂,这期来个贼简单的水晶球里的圣诞树: 这期就是非常简单的三个图形组合: 圣诞树主体 %...
    99+
    2022-12-19
    Matlab粒子圣诞树 Matlab 圣诞树
  • 怎么使用Python画圣诞树
    使用Python画圣诞树可以使用turtle模块来实现。下面是一个简单的示例代码:```pythonimport turtledef...
    99+
    2023-08-18
    python
  • 怎么用Python绘制爱心圣诞树
    这篇文章主要介绍了怎么用Python绘制爱心圣诞树,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。代码# -*- coding: utf-8&nb...
    99+
    2023-06-22
  • 怎么使用C语言实现圣诞树
    要使用C语言实现圣诞树,你可以使用基本的输出函数 printf() 来打印出树的形状和装饰。下面是一个简单的示例代码:```c#include int main() {int height = 5; // 定义树的高度// 打印树的上半...
    99+
    2023-08-09
    C语言
  • HTML中怎么用JS实现旋转的圣诞树
    这篇文章将为大家详细讲解有关HTML中怎么用JS实现旋转的圣诞树,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。<!DOCTYPE HEML PUBLIC><html&...
    99+
    2023-06-22
  • c#怎么使用Unity粒子系统制作手雷爆炸
    这篇文章主要介绍“c#怎么使用Unity粒子系统制作手雷爆炸”,在日常操作中,相信很多人在c#怎么使用Unity粒子系统制作手雷爆炸问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”c#怎么使用Unity粒子系统...
    99+
    2023-06-30
  • 怎么使用Qt制作简单的计算器
    这篇文章主要讲解了“怎么使用Qt制作简单的计算器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Qt制作简单的计算器”吧!前言这里先跟大家说说使用到的函数:槽连接函数connect(信...
    99+
    2023-07-04
  • 如何用Matlab制作一款简单的龙舟小游戏
    今天小编给大家分享一下如何用Matlab制作一款简单的龙舟小游戏的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。效果图:步骤1...
    99+
    2023-06-29
  • 怎么使用css3简单制作进度条
    这篇文章给大家分享的是有关怎么使用css3简单制作进度条的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。html:<body><div id="box&...
    99+
    2024-04-02
  • 怎么使用html制作一个简单的提交表单
    这篇文章主要介绍怎么使用html制作一个简单的提交表单,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!html制作一个表单的方法网页中常见的“登录”“注册”等功能通常都是使用表单实现的...
    99+
    2024-04-02
  • 怎么用frontpage制作简单的网页
    本篇内容介绍了“怎么用frontpage制作简单的网页”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Frontpage是微软公司出品的一款制...
    99+
    2023-06-08
  • 怎么利用Pygame制作简单动画
    这篇文章主要介绍“怎么利用Pygame制作简单动画”,在日常操作中,相信很多人在怎么利用Pygame制作简单动画问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么利用Pygame制作简单动画”的疑惑有所帮助!...
    99+
    2023-06-30
  • 怎么用PHP制作一个简单的日历
    这篇“怎么用PHP制作一个简单的日历”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用PHP制作一个简单的日历”文章吧。实...
    99+
    2023-07-05
  • 怎么用HTML制作一个简单的页面
    这篇文章主要介绍“怎么用HTML制作一个简单的页面”,在日常操作中,相信很多人在怎么用HTML制作一个简单的页面问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用HTML制...
    99+
    2024-04-02
  • vue3使用particles粒子特效的问题怎么解决
    这篇文章主要介绍了vue3使用particles粒子特效的问题怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue3使用particles粒子特效的问题怎么解决文章都会有所收获,下面我们一起来看看吧。v...
    99+
    2023-06-30
  • 怎么使用CSS制作一个简单美观的导航栏
    这篇文章主要讲解了“怎么使用CSS制作一个简单美观的导航栏”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用CSS制作一个简单美观的导航栏”吧! ...
    99+
    2024-04-02
  • 怎么使用HTML制作一个简单美观的导航栏
    小编给大家分享一下怎么使用HTML制作一个简单美观的导航栏,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在不久前学习了基础知识(...
    99+
    2024-04-02
  • 怎么用HTML5中的Canvas结合公式绘制粒子运动
    本篇内容介绍了“怎么用HTML5中的Canvas结合公式绘制粒子运动”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学...
    99+
    2024-04-02
  • 怎么用ccs制作一个简单的html布局
    这篇文章将为大家详细讲解有关怎么用ccs制作一个简单的html布局,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、创建htmlHtml编辑代码示例<!DOCTYP...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作