matlab實例——三維心心圖

特別感謝

B站作者@基山督的 視頻及源代碼

相關推薦

二維動態心見往期

三維心心代碼

hn=figure('name','心心心','color','k');		%創建一個界面,名字是心心心,界面背景是黑色
[x,y,z]=meshgrid(linspace(-3,3)); 			%做出網格,linspace生成-33之間的數值,默認100個。
F=((-(x.^2) .* (z.^3) -(9/80).*(y.^2).*(z.^3)) + ((x.^2) + (9/4).* (y.^2) + (z.^2)-1).^3);     %笛卡爾座標系下的心型函數,隱函數。高數書附錄裏有
isosurface(F,0);							%基於指定的0處的體數據 V 計算等值面數據
lighting phong								%光照模式。
axis equal   								%等比座標軸
axis off     								%去除座標軸
%brighten(0); 								%增加亮度
a=[1 1 1];
colormap(a); 								%設置心心的顏色和a代表的rgb顏色相同
view([0 1800]); 							%代表打開時的視角

在這裏插入圖片描述

練習三維球

T1=figure('name','xiazuo','color','w');        %設置一個名爲“正方體”的窗口,背景顏色爲黑色
[x,y,z]=meshgrid(linspace(-3,3));
F=(x.^2+y.^2+z.^2+x+y+z);
isosurface(F,0);        %隱函數繪圖
lighting phong%不要加“;”
axis equal%不要加“;”
axis off%不要加“;”
A=[0 1 1];
colormap(A);
view([30,90]);

在這裏插入圖片描述

一、isosurface

isosurface函數可以畫隱函數的等值曲線或曲面

二、meshgrid

於生成網格採樣點的函數。在使用MATLAB進行3D圖形繪製方面有着廣泛的應用。

三、光源位置及照明模式

在繪製帶光照的三維圖像時,可以利用light命令與lightangle命令來確定光源位置。

1.light函數

  • 函數調用:light(‘color’, s1, ‘style’, s2, ‘position’, s3)
  • 含義:其中color、style與position的位置可以互換,s1,s2,s3爲相應的可選值。例如light(‘position’,[1 0 0])表示光源從無窮遠處沿x軸向原點照射過來。

2.lightangle函數

  • 函數調用:
    1. lightangle(az,el): 在由方位角和仰角確定的位置放置光源
    1. light_handle= lightangle(az,el) :創建一個光源位置並在light_handle中返回light的句柄
    1. lightangle(light_handle,az,el) :設置由light_handle確定的光源位置
    1. [az,el] = lightangle(light_handle) :返回由light_handle確定的光源位置的方位角和仰角

3.lighting照明函數

  • lighting flat :在對象的每個面上產生均勻的燈光。選擇此方法可查看鑲嵌面對象。
  • lighting gouraud :計算頂點法線並沿面進行線性插值。選擇此方法可查看曲面。
  • lighting phong :在每個面上插值頂點法線並計算每個像素處的反射率。選擇此選項可查看曲面。Phong lighting通常比Gouraud lighting產生更好的效果,但渲染需要更長的時間
  • lighting none :關閉照明

四:均分計算指令

  • 調用函數:
    1. logspace(a, b, n):生成一個數組,數據的第一個元素值爲a,最後一個元素爲b,n是總採樣點數。需要注意的是,此時產生的數組元素在10a到10b上並不是均勻分佈的,而形成一個對數曲線。
    1. logspace(x1,x2):用於產生x1,x2之間的N點行線性的矢量。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章