国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MATLAB | 一起來繪制有雪花飄落的圣誕樹叭

這篇具有很好參考價值的文章主要介紹了MATLAB | 一起來繪制有雪花飄落的圣誕樹叭。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

請尊重原創(chuàng)勞動成果
轉載請注明本文鏈接
及文章作者:slandarer

圣誕節(jié)快到了(雖然還有十天),一起來用MATLAB畫個簡單圣誕樹叭~樹的整體構造參考大佬Anselm,同時一部分裝飾代碼參考了大佬Hanchu Wang

代碼幾乎取消了全部的循環(huán),因此至少需要17b之后的版本,僅存的循環(huán)用來讓樹旋轉起來,讓雪花飄落起來,讓樹頂上的星光搖曳起來~

matlab畫動態(tài)雪花,# MATLAB 科學繪圖,matlab,圣誕節(jié)

matlab畫動態(tài)雪花,# MATLAB 科學繪圖,matlab,圣誕節(jié)

圣誕樹及禮物繪制

% 生成樹本體曲面
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畫動態(tài)雪花,# MATLAB 科學繪圖,matlab,圣誕節(jié)

基礎修飾

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')
% 當前坐標區(qū)域修飾
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畫動態(tài)雪花,# MATLAB 科學繪圖,matlab,圣誕節(jié)

繪制星星和光暈

% 繪制星星
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畫動態(tài)雪花,# MATLAB 科學繪圖,matlab,圣誕節(jié)

繪制彩燈

% 繪制圣誕樹上的彩燈
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畫動態(tài)雪花,# MATLAB 科學繪圖,matlab,圣誕節(jié)

繪制雪花

% 繪制雪花
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畫動態(tài)雪花,# MATLAB 科學繪圖,matlab,圣誕節(jié)

動態(tài)變化實現(xiàn)

% 旋轉圖像、雪花飄落
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畫動態(tài)雪花,# MATLAB 科學繪圖,matlab,圣誕節(jié)

完整代碼

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')
% 當前坐標區(qū)域修飾
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)
end
end

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

  • ‘Colormap’,Cmap

刪掉則效果如下:

matlab畫動態(tài)雪花,# MATLAB 科學繪圖,matlab,圣誕節(jié)

若是將將Cmap改為其他顏色,例如pink

  • ‘Colormap’,pink

則效果如下(pink,bone,copper,cool)
matlab畫動態(tài)雪花,# MATLAB 科學繪圖,matlab,圣誕節(jié)
matlab畫動態(tài)雪花,# MATLAB 科學繪圖,matlab,圣誕節(jié)
matlab畫動態(tài)雪花,# MATLAB 科學繪圖,matlab,圣誕節(jié)
matlab畫動態(tài)雪花,# MATLAB 科學繪圖,matlab,圣誕節(jié)文章來源地址http://www.zghlxwxcb.cn/news/detail-768718.html

到了這里,關于MATLAB | 一起來繪制有雪花飄落的圣誕樹叭的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Python - Matplotlib 繪制 3D 圣誕樹

    Python - Matplotlib 繪制 3D 圣誕樹

    ? 前言 轉自: How to draw a 3D Christmas Tree with Matplotlib | by Timur Bakibayev, Ph.D. | Analytics Vidhya | Medium https://medium.com/analytics-vidhya/how-to-draw-a-3d-christmas-tree-with-matplotlib-aabb9bc27864 因為我們把圣誕樹安裝在暖氣電池旁邊,所以它很快就死了。所以我決定用 Matplotlib 繪制一棵圣誕樹。你不

    2024年01月21日
    瀏覽(102)
  • 使用Python繪制圣誕樹教程(附源代碼)

    使用Python繪制圣誕樹教程(附源代碼)

    ???♂? 個人主頁:@艾派森的個人主頁 ???作者簡介:Python學習者 ?? 希望大家多多支持,我們一起進步!?? 如果文章對你有幫助的話, 歡迎評論 ??點贊???? 收藏 ??加關注+ 又是一年一度的圣誕節(jié)快到了,作為程序猿那必須露一手,最終效果圖如下: 目錄 1.turtle庫

    2024年02月04日
    瀏覽(22)
  • 圣誕節(jié)教你如何用Html+JS+CSS繪制3D動畫圣誕樹

    圣誕節(jié)教你如何用Html+JS+CSS繪制3D動畫圣誕樹

    上篇文章給大家提供了一個如何生成靜態(tài)圣誕樹的demo。但是那樣還不夠高級,如何高級起來,當然是3D立體帶動畫效果了。 先看效果圖: 源碼如下: 將源碼復制保存到html中打開即可。源碼都是些基本的知識,不過多講解。

    2024年02月03日
    瀏覽(29)
  • 圣誕節(jié)怎么能缺少圣誕樹呢?Python+HTML打造專屬于你的圣誕樹

    圣誕節(jié)怎么能缺少圣誕樹呢?Python+HTML打造專屬于你的圣誕樹

    前言: 美酒一杯讓人醉,溫馨陪伴浪漫隨;雪花片片惹人愛,煩惱憂傷全不見;字里行間藏真情,文短情深送心愿:圣誕佳節(jié)快來到,祝大家永遠開心幸福! Hello大家好,我是Dream。 圣誕節(jié)馬上到了,一些朋友問我想送女朋友和男朋友們圣誕節(jié)禮物,但是也沒想到啥好點子,作為

    2024年02月02日
    瀏覽(94)
  • python系列之(大家圣誕快樂)圣誕樹

    python系列之(大家圣誕快樂)圣誕樹

    2022年圣誕節(jié)到來啦,很高興這次我們又能一起度過~, 圣誕節(jié)源自古羅馬人迎接新年的農神節(jié),與基督教本無關系。在基督教盛行羅馬帝國后,教廷將這種民俗節(jié)日納入基督教體系,同時以慶祝耶穌的降生。但在圣誕節(jié)這天不是耶穌的生辰,因為《圣經》未記載耶穌具體出生

    2024年02月04日
    瀏覽(98)
  • 【含源碼】兩種不同風格的圣誕樹代碼合集,其中還有可以改名字的圣誕樹代碼

    【含源碼】兩種不同風格的圣誕樹代碼合集,其中還有可以改名字的圣誕樹代碼

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 前言 一年一度的圣誕節(jié)馬上就要到了,看到好多程序員小伙伴已經開始炫耀自己制作的圣誕樹了。今天就跟大家分享2種不同風格的圣誕樹,附上完整代碼,拿來即用可以按照自己的喜好來去運

    2024年02月02日
    瀏覽(16)
  • 打印圣誕樹

    打印圣誕樹

    今天遇到一個不算特別變態(tài)的題目,可是卻往錯誤的方向思考了有一會兒。 這是這個題目的鏈接:[打印圣誕樹](圣誕樹_牛客題霸_??途W (nowcoder.com)) 題目大致意思是,給定一個高度,打印出圣誕樹。 效果圖類似以下這種: 首先我把每片葉子看作是 5X3的矩形 ,空白看作是

    2023年04月12日
    瀏覽(28)
  • Python 圣誕樹代碼

    Python 圣誕樹代碼

    1.本章將會講解Python編程 實現(xiàn)圣誕樹效果! 2.圣誕節(jié)介紹 基督教紀念耶穌誕生的重要節(jié)日。亦稱耶穌圣誕節(jié)、主降生節(jié),天主教亦稱耶穌圣誕瞻禮。耶穌誕生的日期,《圣經》并無記載。公元336年羅馬教會開始在12月25日過此節(jié)。12月25日原是羅馬帝國規(guī)定的太陽神誕辰。有人

    2024年02月03日
    瀏覽(93)
  • 【AE圣誕樹代碼】

    【AE圣誕樹代碼】

    首發(fā)網站 天風的人工智能小站 1、圣誕樹代碼第一種 2、圣誕樹代碼第二種 3、修改記事本后綴為html 4、點擊文件查看效果

    2024年02月04日
    瀏覽(17)
  • 圣誕樹(動態(tài)效果)

    圣誕樹(動態(tài)效果)

    ? 1.復制代碼到Dreamweaver或HBuilder或vscode中 2.點擊運行---運行到瀏覽器---選擇你要打開的瀏覽器 3.打開后會出現(xiàn)這個界面,前四個是固定音樂,最后一個是自主選擇的音樂,你可以選擇你電腦上的歌曲,什么歌曲都行(第一次打開可能會有點慢,稍等片刻即可,選擇音樂的時候

    2024年02月04日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包