91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么利用Matlab繪制一個可愛的南瓜燈

發布時間:2022-02-28 09:24:54 來源:億速云 閱讀:167 作者:小新 欄目:開發技術

這篇文章主要介紹怎么利用Matlab繪制一個可愛的南瓜燈,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

效果及原理

效果如下:

怎么利用Matlab繪制一個可愛的南瓜燈

調一下數據還能改成三角眼:

怎么利用Matlab繪制一個可愛的南瓜燈

原理

南瓜主體函數從知友 [九章算法] 的一張圖而來,大體是瓜身瓜柄分段函數,然后繞著z軸旋轉一周得到曲面,我對數值做了微調,原圖及原始數據:

怎么利用Matlab繪制一個可愛的南瓜燈

實現方法

這里我故意保留了網格讓南瓜看起來有一點布娃娃的感覺,(大家也可以根據自己喜好改寫,例如將’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,Z
h=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;
end

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

怎么利用Matlab繪制一個可愛的南瓜燈

怎么利用Matlab繪制一個可愛的南瓜燈

眼睛嘴巴部分:

這部分我就將一部分曲面上的點設置為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,Z
h=cos(p).*foutline(t,p);
R=sin(p).*foutline(t,p);
R=R.*mask;
X=cos(t).*R;
Y=sin(t).*R;

怎么利用Matlab繪制一個可愛的南瓜燈

發光:

為了模擬發光,我在南瓜內部繪制了一個小一圈的南瓜并設置為燈光的顏色:

% 繪制一個小一圈的南瓜頭假裝光源
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')

怎么利用Matlab繪制一個可愛的南瓜燈

完整代碼

function pumpkin
clc;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,Z
h=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;
end

figure()
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繪制一個可愛的南瓜燈

以上是“怎么利用Matlab繪制一個可愛的南瓜燈”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

翁源县| 松江区| 崇州市| 安徽省| 公主岭市| 甘南县| 安平县| 沿河| 楚雄市| 雷州市| 博客| 遂昌县| 浪卡子县| 红原县| 库尔勒市| 红安县| 申扎县| 灵石县| 孟州市| 峨眉山市| 武川县| 奉化市| 安福县| 龙门县| 汝南县| 沂源县| 湖口县| 苏尼特左旗| 增城市| 赣榆县| 靖边县| 秦安县| 河源市| 东辽县| 五华县| 平泉县| 新龙县| 铁岭市| 长寿区| 阳原县| 诸城市|