| MATLAB Function Reference | ![]() |
從體積(volume)資料抽出(extract)分離平面(isosurface)資料。
Syntax
fv = isosurface(X,Y,Z,V,isovalue) fv = isosurface(V,isovalue) fv = isosurface(X,Y,Z,V), fv = isosurface(X,Y,Z,V) fvc = isosurface(...,colors) fv = isosurface(...,'noshare') fv = isosurface(...,'verbose') [f,v] = isosurface(...) isosurface(...)
Description
fv = isosurface(X,Y,Z,V,isovalue)在isovalue所明確說明的分離平面(isosurface)值上從體積資料(volume data)V裡計算分離平面(isosurface)資料。陣列X、Y和Z為體積V定義了座標。結構fv包含了分離平面(isosurface)的表面(face)和頂點(vertices),同時你可以將他直接傳給patch指令。
fv = isosurface(V,isovalue)假設陣列X、Y和Z被定義成為[X,Y,Z] = meshgrid(1:n,1:m,1:p)其中[m,n,p] = size(V)。
fvc = isosurface(...,colors)
插入(interpolates)陣列colors到純數(scalar)領域(field)之上,同時結構(struct)fvc裡的facevertexcdata領域(field)傳回插入(interpolated)的值。陣列colors的大小一定要和V一樣。顏色參數(argument)可使你利用資料(data)來控制分離表面(isosurface)的顏色對應(color mapping),和估算(calculate)分離表面(isosurface)的方式是不同的。(舉例來說:溫度資料重疊(superimposed)在風(wind)流動的分離表面(isosurface))
fv = isosurface(...,'noshare')不會創造共用(shared)的頂點。這樣子做會更快,但是會製造更多的頂點(vertices)集(set)。
fv = isosurface(...,'verbose')當計算正在進行中,會印出進展上的訊息到指令視窗(command windows)。
[f,v] = isosurface(...) 以兩個陣列取代結構(struct)的方式傳回表面和頂點。
isosurface(...)具有無輸出參數(arguments)會使用計算過(computed)的表面(face)和頂點(vertices)創造一個土地(patch)。
Remarks
你可以值結傳遞由isosurface所創造的結構fv到patch指令,但你不可以沒有明確說明屬性(property)的名字就個別的傳遞表面和頂點陣列(f、v)到patch比如:
patch(isosurface(X,Y,Z,V,isovalue))
[f,v] = isosurface(X,Y,Z,V,isovalue);
patch('Faces',f,'Vertices',v)
Examples
這個範例使用了流向資料集(flow data set),其資料集表示在一個無限大(infinite)水箱(tank)裡頭做潛入(submerged)噴射(jet)的速率(speed)概況(profile)(鍵入help flow來獲得更多的訊息)。分離表面在資料值為-3的時候被畫出。在patch指令下的陳述式為打光(lighting)準備了分離平面:
isonormals)set, FaceColor, EdgeColor)daspect, view)camlight, lighting)[x,y,z,v] = flow; p = patch(isosurface(x,y,z,v,-3)); isonormals(x,y,z,v,p)set(p,'FaceColor','red','EdgeColor','none');daspect([1 1 1])view(3); axis tightcamlightlightinggouraud
See Also
isonormals, isocaps, reducepatch, reducevolume, shrinkfaces, smooth3, subvolume
| isonormals | isstr | ![]() |