Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

isosurface

物体データから等値面データを抽出

構文

fv = isosurface(X,Y,Z,V,isovalue)
fv = isosurface(V,isovalue)
fvc = isosurface(...,colors)
fv = isosurface(...,'noshare')
fv = isosurface(...,'verbose')
[f,v] = isosurface(...)
[f,v,c] = isosurface(...)
isosurface(...)

説明

fv = isosurface(X,Y,Z,V,isovalue)は、物体データVから、isovalueで指定した等値面値の平面データを計算します。つまり、関数 isosurface は、等高線が同じ標高の点を連結するように、指定された値をもつ点を接続します。

配列XYZは、直交軸の範囲グリッドを表します。Vには、これらのグリッド点の対応する値が含まれます。座標配列 (XYおよびZ) は単調で、meshgridによって生成された形式に従っていなければなりません。Vは、XYおよびZと同じサイズの 3 次元ボリューム配列でなければなりません。

structfvは、等値面の面と頂点を含んでいて、patchコマンドに直接渡すことができます。

fv = isosurface(V,isovalue)は、配列XYZが、[m,n,p] = size(V)である[X,Y,Z] = meshgrid(1:n,1:m,1:p)として定義されていることを前提としています。

fvc = isosurface(...,colors)は、配列colorsをスカラー場に内挿し、内挿された値を構造体fvcのフィールドfacevertexcdataに返します。配列colorsのサイズは、Vのサイズと同じでなければなりません。colors引数は、等値面を計算するために使用するものと異なるデータをもつ等値面 (たとえば、温度データを風向の等値面上に重ね書きする) のカラー マッピングを制御できます。

fv = isosurface(...,'noshare')は、共有する頂点を作成しません。そのため、高速で計算できますが、非常に大きな集合を作成します。

fv = isosurface(...,'verbose')は、計算の進行状況に応じて、コマンド ウィンドウにその状況を表すメッセージを表示します。

[f,v] = isosurface(...)または[f,v,c] = isosurface(...)は、struct ではなく別々の配列で面と頂点 (およびfaceVertexcCData) を返します。

出力引数なしのisosurface(...)は、算出した面と頂点を使用して現在の座標軸にパッチを作成します。現在の座標軸がない場合は、3 次元のビューを使用して新しい座標軸が作成されます。

特殊なケースの動作 — 出力引数なしで呼び出された関数 isosurface

現在の座標軸がなく、出力引数を割り当てずに関数isosurfaceを呼び出すと、MATLAB®は座標軸を新規作成し、3 次元ビューに設定して、isosurface グラフにライティングを追加します。

ライティングを使用した等値面の描画

flow データセットを読み込みます。このデータセットは無限大のタンク内での水中ジェットの速度プロファイルを表しています。データ値-3で等値面を描画し、次の手順でライティング用に等値面を準備します。

  • ボリューム データを基に等値面法線を再計算します。

  • フェースとエッジのカラーを設定します。

  • 視点を設定します。

  • ライティングを付加します。

[x,y,z,v] = flow; p = patch(isosurface(x,y,z,v,-3)); isonormals(x,y,z,v,p) p.FaceColor ='red'; p.EdgeColor ='none'; daspect([1 1 1]) view(3); axistightcamlight lightinggouraud

Figure contains an axes. The axes contains an object of type patch.

等値面カラーの設定

フロー データを可視化しますが、表面をカラーコード化し、x軸に沿った大きさを示します。6 番目の引数を関数isosurfaceに使用します。これは、結果の等値面をカラー化することで、別のデータセットをオーバーレイする方法を提供します。colors変数は、isosurface の各頂点のスカラー値を含むベクトルで、現在のカラー マップで表現されます。この場合、Surface を定義する変数の 1 つですが、完全に独立することがあります。現在の Figure のカラー マップを変更すると、別のカラー スキームを適用できます。

[x,y,z,v] = flow; [faces,verts,colors] = isosurface(x,y,z,v,-3,x); patch('Vertices',verts,'Faces',faces,'FaceVertexCData',colors,...'FaceColor','interp','EdgeColor','interp') view(30,-15) axisvis3dcolormapcopper

Figure contains an axes. The axes contains an object of type patch.

ヒント

関数isosurfaceにより作成されたfv構造体を直接patchコマンドに転送することができます。しかし、プロパティ名を設定しないと、各面と頂点の配列 (f,v) をpatchに直接渡すことができません。以下に例を示します。

patch(isosurface(X,Y,Z,V,isovalue))

または

[f,v] = isosurface(X,Y,Z,V,isovalue); patch('Faces',f,'Vertices',v)

拡張機能

R2006a より前に導入