MATLAB繪制3D隱函數(shù)曲面的方法總結

2017-03-28  by:CAE仿真在線  來源:互聯(lián)網(wǎng)

l. isosurface 等值面函數(shù)
調(diào)用格式:fv = isosurface(X,Y,Z,V,isovalue)
作用:返回某個等值面(由isovalue指定)的表面(faces)和頂點(vertices)數(shù)據(jù),存放在結構體fv中(fvvertices、faces兩個域構成)。如果是畫隱函數(shù) v = f(x,y,z) = 0 的三維圖形,那么等值面的數(shù)值為isovalue = 0。

2. patch函數(shù)
調(diào)用格式:patch(X,Y,C) 以平面坐標(X, Y)為頂點,構造平面多邊形,CRGB顏色向量
patch(X,Y,Z,C)以空間3-D坐標(X, Y,Z)為頂點,構造空間3D曲面,CRGB顏色向量
patch(fv) 通過包含vertices、faces兩個域的結構體fv來構造3D曲面,fv可以直接由等值面函數(shù)isosurface得到
例如:patch(isosurface(X,Y,Z,V,0))

3. isonormals等值面法線函數(shù)
調(diào)用格式:isonormals(X,Y,Z,V,p)
實現(xiàn)功能:計算等值面V的頂點法線,將patch曲面p的法線設置為計算得到的法線(ppatch返回得到的句柄)。如果不設置法線的話,得到曲面在過渡地帶看起來可能不是很光滑

解決辦法一:isosurface patch isonormals
實現(xiàn)原理:先定義3元顯函數(shù)v =f(x, y, z), v = 0 定義的等值面就是z = g(x,y)3D曲面。利用isosurface函數(shù)獲取v= 0 的等值面,將得到的等值面直接輸入給patch函數(shù),得出patch句柄p,并畫出patch曲面的平面視角圖形。對pisonormals函數(shù)設置曲面頂點數(shù)據(jù)的法線,最后設置顏色、亮度、3D視角,得到3D曲面。

代碼如下:
  1. f = @(x,y,z) x.*y.*z.*log(1 x.^2 y.^2 z.^2)-10; % 函數(shù)表達式
  2. [x,y,z] = meshgrid(-10:.2:10,-10:.2:10,-10:.2:10); % 畫圖范圍
  3. v = f(x,y,z);
  4. h = patch(isosurface(x,y,z,v,0));
  5. isonormals(x,y,z,v,h)
  6. set(h,'FaceColor','r','EdgeColor','none');
  7. xlabel('x');ylabel('y');zlabel('z');
  8. alpha(1)
  9. grid on; view([1,1,1]); axis equal; camlight; lighting gouraud


ezimplot3的方法實質(zhì)是跟方法1是一樣的。
補充一個:MC(Marching Cube)方法,這是計算機圖像學中很有名的方法。
http://www.mathworks.com/matlabc ... 2506-marching-cubes




開放分享:優(yōu)質(zhì)有限元技術文章,助你自學成才

相關標簽搜索:MATLAB繪制3D隱函數(shù)曲面的方法總結 MatLab培訓 MatLab培訓課程 MatLab在線視頻教程 MatLab技術學習教程 MatLab軟件教程 MatLab資料下載 MatLab代做 MatLab基礎知識 Fluent、CFX流體分析 HFSS電磁分析 Ansys培訓 Abaqus培訓 

編輯
在線報名:
  • 客服在線請直接聯(lián)系我們的客服,您也可以通過下面的方式進行在線報名,我們會及時給您回復電話,謝謝!
驗證碼

全國服務熱線

1358-032-9919

廣州公司:
廣州市環(huán)市中路306號金鷹大廈3800
電話:13580329919
          135-8032-9919
培訓QQ咨詢:點擊咨詢 點擊咨詢
項目QQ咨詢:點擊咨詢
email:kf@1cae.com