ドキュメンテーション センター

  • 評価版
  • 製品アップデート

目次

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

isonormals

等値面の頂点の法線を計算

構文

n = isonormals(X,Y,Z,V,vertices)
n = isonormals(V,vertices)
n = isonormals(V,p) and n = isonormals(X,Y,Z,V,p)
n = isonormals(...,'negate')
isonormals(V,p) and isonormals(X,Y,Z,V,p)

説明

n = isonormals(X,Y,Z,V,vertices) は、頂点に関するリスト vertices から、データ V の勾配を使用して、等値面頂点の法線を計算します。配列 XYZ は、3 次元物体 V に関する座標を定義します。計算される法線は、n に返されます。

n = isonormals(V,vertices) は、[X,Y,Z] = meshgrid(1:n,1:m,1:p) として定義される配列 XY、および Z を仮定しています。ここで、[m,n,p] = size(V) です。

n = isonormals(V,p) and n = isonormals(X,Y,Z,V,p) は、ハンドル p により識別されるパッチの頂点からの法線を計算します。

n = isonormals(...,'negate') は、法線を打ち消し (法線を逆方向に計算し) ます。

isonormals(V,p) and isonormals(X,Y,Z,V,p) は、値を返すのではなく、計算された法線を、ハンドル p により識別されるパッチの VertexNormals プロパティに設定します。

以下の例は、ライトを照射された等値面の可視表示上へ直交するさまざまの平面の影響を比較するものです。一例として、三角形を使って、法線を定義する等値面を作成します。また、関数 isonormals は、物体データを使って、データ点の勾配をベースに頂点法線を計算します。後者の方が、一般に、スムーズに表現できます。

物体データの 3 次元配列を設定します (catinterp3)。

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');

物体データから等値面を描き、ライトを付加します。ここでは、三角形による法線計算を行っています (patchisosurfaceviewdaspectaxiscamlightlightingtitle)。

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')

以下の図は、法線の算出の 2 つの方法の違いを示したものです。

参考

| | | | | |

この情報は役に立ちましたか?