最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用Matlab繪制一個(gè)可愛(ài)的南瓜燈

 更新時(shí)間:2022年02月26日 15:07:27   作者:slandarer  
這篇文章主要為大家介紹了如何利用Matlab繪制一個(gè)可愛(ài)的南瓜燈!文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Matlab有一定幫助,需要的可以參考一下

效果及原理

效果如下:

調(diào)一下數(shù)據(jù)還能改成三角眼:

原理

南瓜主體函數(shù)從知友 [九章算法] 的一張圖而來(lái),大體是瓜身瓜柄分段函數(shù),然后繞著z軸旋轉(zhuǎn)一周得到曲面,我對(duì)數(shù)值做了微調(diào),原圖及原始數(shù)據(jù):

實(shí)現(xiàn)方法

這里我故意保留了網(wǎng)格讓南瓜看起來(lái)有一點(diǎn)布娃娃的感覺(jué),(大家也可以根據(jù)自己喜好改寫(xiě),例如將’EdgeColor’設(shè)置為’none’并打個(gè)光啥的)

% 構(gòu)造網(wǎng)格
[t,p]=meshgrid(linspace(0,2*pi,200),linspace(0,pi-.05,200));
% 二元分段函數(shù)
foutline=@(t,p)(p<=.14).*90.*cos(7.*p)+(p>.14).*(cos(20.*t)+70).*(p.*(pi-p+.1)).^.2;

% 球面坐標(biāo)轉(zhuǎn)化為X,Y,Z
h=cos(p).*foutline(t,p);
R=sin(p).*foutline(t,p);
R=R;
X=cos(t).*R;
Y=sin(t).*R;

% 顏色矩陣構(gòu)造
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;
end

figure()
surf(X,Y,h,'CData',CMap,'EdgeColor',[0,0,0],'EdgeAlpha',.2)

眼睛嘴巴部分:

這部分我就將一部分曲面上的點(diǎn)設(shè)置為nan,繪制出來(lái)的圖像相對(duì)應(yīng)地方就是空缺:

% 畫(huà)個(gè)嘴巴
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;


% 球面坐標(biāo)轉(zhuǎn)化為X,Y,Z
h=cos(p).*foutline(t,p);
R=sin(p).*foutline(t,p);
R=R.*mask;
X=cos(t).*R;
Y=sin(t).*R;

發(fā)光:

為了模擬發(fā)光,我在南瓜內(nèi)部繪制了一個(gè)小一圈的南瓜并設(shè)置為燈光的顏色:

% 繪制一個(gè)小一圈的南瓜頭假裝光源
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 pumpkin
clc;clear;

% 構(gòu)造網(wǎng)格
[t,p]=meshgrid(linspace(0,2*pi,200),linspace(0,pi-.05,200));
% 二元分段函數(shù)
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));

% 畫(huà)個(gè)嘴巴
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;


% 球面坐標(biāo)轉(zhuǎn)化為X,Y,Z
h=cos(p).*foutline(t,p);
R=sin(p).*foutline(t,p);
R=R.*mask;
X=cos(t).*R;
Y=sin(t).*R;


% 顏色矩陣構(gòu)造
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;
end

figure()
surf(X,Y,h,'CData',CMap,'EdgeColor',[0,0,0],'EdgeAlpha',.2)
ax=gca;
hold(ax,'on')
% ax.Color=[0 0 0];

% 繪制一個(gè)小一圈的南瓜頭假裝光源
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繪制一個(gè)可愛(ài)的南瓜燈的詳細(xì)內(nèi)容,更多關(guān)于Matlab繪制南瓜燈的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C語(yǔ)言新建臨時(shí)文件和臨時(shí)文件名的方法

    C語(yǔ)言新建臨時(shí)文件和臨時(shí)文件名的方法

    這篇文章主要介紹了C語(yǔ)言新建臨時(shí)文件和臨時(shí)文件名的方法,分別是mkstemp()函數(shù)和mktemp()函數(shù)的使用,需要的朋友可以參考下
    2015-08-08
  • C++實(shí)現(xiàn)LeetCode(904.水果裝入果籃)

    C++實(shí)現(xiàn)LeetCode(904.水果裝入果籃)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(904.水果裝入果籃),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C語(yǔ)言實(shí)現(xiàn)通訊錄系統(tǒng)課程設(shè)計(jì)

    C語(yǔ)言實(shí)現(xiàn)通訊錄系統(tǒng)課程設(shè)計(jì)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)通訊錄系統(tǒng)課程設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • C++中浮點(diǎn)類(lèi)型的具體使用

    C++中浮點(diǎn)類(lèi)型的具體使用

    C++提供了不同精度的浮點(diǎn)類(lèi)型,主要有?float、double?和?long?double,這些浮點(diǎn)類(lèi)型具有不同的字節(jié)大小和范圍,用于滿足不同應(yīng)用場(chǎng)景的精度要求,本文主要介紹了C++中浮點(diǎn)類(lèi)型的具體使用,感興趣的可以了解一下
    2023-08-08
  • C++ 11和C++98相比有哪些新特性

    C++ 11和C++98相比有哪些新特性

    C++11標(biāo)準(zhǔn)提供了許多有用的新特性。這篇文章特別針對(duì)使C++11和C++98相比看上去像一門(mén)新語(yǔ)言的特性
    2017-03-03
  • C指針原理教程之Ncurses介紹

    C指針原理教程之Ncurses介紹

    Ncurses 提供字符終端處理庫(kù),包括面板和菜單。為了能夠使用ncurses庫(kù),您必須在您的源程序中將curses.h包括(include)進(jìn)來(lái),而且在編譯的需要與它連接起來(lái). 在gcc中您可以使用參數(shù)-lcurses進(jìn)行編譯.
    2019-02-02
  • C讀txt到二維數(shù)組的實(shí)現(xiàn)方法

    C讀txt到二維數(shù)組的實(shí)現(xiàn)方法

    下面小編就為大家?guī)?lái)一篇C讀txt到二維數(shù)組的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-12-12
  • C++&&Opencv實(shí)現(xiàn)控制臺(tái)字符動(dòng)畫(huà)的方法

    C++&&Opencv實(shí)現(xiàn)控制臺(tái)字符動(dòng)畫(huà)的方法

    這篇文章主要介紹了C++&&Opencv實(shí)現(xiàn)控制臺(tái)字符動(dòng)畫(huà)的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • C++11中強(qiáng)類(lèi)型枚舉的使用

    C++11中強(qiáng)類(lèi)型枚舉的使用

    本文主要介紹了C++11中強(qiáng)類(lèi)型枚舉的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • C語(yǔ)言中的常量詳解

    C語(yǔ)言中的常量詳解

    本文主要講解C語(yǔ)言 常量,這里整理了 C語(yǔ)言常量的基礎(chǔ)知識(shí),并附代碼示例和示例詳細(xì)講解,希望能幫助開(kāi)始學(xué)習(xí)C 語(yǔ)言的同學(xué)
    2021-09-09

最新評(píng)論

米易县| 牟定县| 白山市| 达孜县| 慈利县| 湟中县| 柞水县| 宁国市| 吴忠市| 农安县| 奉化市| 康平县| 中西区| 南靖县| 文登市| 石城县| 汪清县| 马尔康县| 巴青县| 英德市| 丹寨县| 察雅县| 德州市| 报价| 武陟县| 二手房| 永新县| 崇左市| 玉龙| 磴口县| 平南县| 桓台县| 隆回县| 营山县| 康乐县| 黄骅市| 友谊县| 南开区| 磴口县| 木里| 水富县|