| MATLAB Function Reference | ![]() |
計算分離平面(isosurface)頂點(vertoces)的法線(normals)。
Syntax
n = isonormals(X,Y,Z,V,vertices)
n = isonormals(V,vertices)
n = isonormals(V,p), n = isonormals(X,Y,Z,V,p)
n = isonormals(...,'negate')
isonormals(V,p), isonormals(X,Y,Z,V,p)
Description
n = isonormals(X,Y,Z,V,vertices)從頂點清單(list)vertices計算分離平面(isosurface)頂點的法線(normals)使用資料V的梯度(gradient)。陣列X、Y和Z在體積V上定義了座標。計算過後的法線(normals)會在n中被傳回。
n = isonormals(V,vertices)假設陣列X、Y和Z被定義成[X,Y,Z] = meshgrid(1:n,1:m,1:p)其中[m,n,p] = size(V)。
n = isonormals(V,p) and n = isonormals(X,Y,Z,V,p) 被控制(handle) p所辨識(identified)的土地,從該土地裡的頂點計算法線(normals)。
n = isonormals(...,'negate')取消(negates)(反轉(reverse)其方向(direction))其法線(normals)。
isonormals(V,p)和isonormals(X,Y,Z,V,p)設定被控制(handle) p所辨識(identified)出來的土地其VertexNormals 的屬性給計算過的法線(normals),而不是傳回來的值。
Examples
這個範例在比較不同平面(surface)下的法線(normals),在被打光(lit)的分離平面(isosurfaces)上其視覺外觀(appearance)效果(effect)。在某種情況下,用來畫出分離表面(isosurface)的三角形(triangles)是定義法線(normals)的。在別的情況下isonormals函數根據資料點(data points)的梯度(gradient)使用體積資料去預估(calculate)頂點的法線(normals)後面的方法一般而言會產生一個看起來較為平滑(smoother-appearing)的分離表面。
定一個體積資料的三維(3-D)陣列(cat和interp3):
data = cat(3, [0 .2 0; 0 .3 0; 0 0 0], ...
[.1 .2 0; 0 1 0; .2 .7 0],...
[0 .4 .2; .2 .4 0;.1 .1 0]);
data = interp3(data,3,'cubic');
從體積資料畫一個分離平面(isosurface)並加上光線。這個分離平面使用三角形(triangle)法線(patch、isosurface、view、daspect、axis、camlight、lighting、title):
subplot(1,2,1)
p1 = patch(isosurface(data,.5),...
'FaceColor','red','EdgeColor','none');
view(3); daspect([1,1,1]); axis tight
camlight; camlight(-80,-10); lighting phong;
title('Triangle Normals')
使用來自體積資料估算(calculated)的法線(normals)來畫一個相同的被打光(lit)分離平面(isosurface)。
subplot(1,2,2)
p2 = patch(isosurface(data,.5),...
'FaceColor','red','EdgeColor','none');
isonormals(data,p2)
view(3); daspect([1 1 1]); axis tight
camlight; camlight(-80,-10); lighting phong;
title('Data Normals')
這些分離表面(isosurface)說明了三角形(triangle)與資料法線(data normals)的不同:
See Also
interp3, isosurface, isocaps, smooth3, subvolume, reducevolume, reducepatch
| isocolors | isosurface | ![]() |