| MATLAB Function Reference | ![]() |
表示
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)
詳細
n = isonormals(X,Y,Z,V,vertices) は、頂点に関するリストverticesから、データVの勾配を使って、等平面頂点の法線を計算します。配列 X, Y, Z は、3次元物体Vに対する座標系を設定します。計算される法線は、nに出力されます。
n = isonormals(V,vertices) は、[X,Y,Z] = meshgrid(1:n,1:m,1:p)で設定される配列 X, Y, Z を定義します。ここで、[m,n,p] = size(V)です。
n = isonormals(V,p)とn = isonormals(X,Y,Z,V,p)は、ハンドルpにより識別されるパッチの頂点からの法線を出力します。
n = isonormals(...,'negate') は、逆方向の法線を出力します。
isonormals(V,p) とisonormals(X,Y,Z,V,p) は、値を出力するよりもむしろ計算される法線をハンドルpで識別するパッチの VertexNormals プロパティを設定します。
例題
つぎの例題は、ライトを照射された等平面の可視表示上へ直交する様々の平面の影響を比較するものです。一つのケースとして、三角形を使って、法線を定義する等平面を描きます。一方、関数 isonormals は、物体データを使って、データ点の勾配をベースに法線を計算します。後者の方が、一般に、スムーズに表現できます。
物体テータの3次元配列を設定します(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');
物体データから等平面を描き、光源を付け加えます。ここでは、三角形による法線計算を行っています(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')
物体データから計算される法線を使って、同じライトの照射された等平面を描きます。
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')
参考
interp3, isosurface, isocaps, smooth3, subvolume, reducevolume, reducepatch
| isocolors | isosurface | ![]() |