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

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

目次

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

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 次元配列でなければなりません。

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

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

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

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

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

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

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

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

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

例 1

この例は、フロー データセットを使って、無限タンク内の水中での噴出速度プロファイルを表すものです (詳細は、「help flow」と入力してください)。等値面は、-3 の値に対して描画されています。patch コマンドの後に、ライティングにより作成された等値面を示します。

  • 物体データを基に等値面法線を再計算 (isonormals)

  • 面とエッジのカラーを設定 (setFaceColorEdgeColor)

  • 視点の設定 (daspectview)

  • ライティングの付加 (camlightlighting)

    [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 tight
    camlight 
    lighting gouraud

例 2

上記と同じフロー データを可視化しますが、Surface をカラーコード化し、X 軸に沿った大きさを示します。6 番目の引数を関数 isosurface に使用します。これは、結果の 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);
axis vis3d;
colormap copper

詳細

すべて展開する

ヒント

関数 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)

参考

| | |

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