メッシュ プロットと表面プロットの作成
メッシュ プロットと表面プロットについて
MATLAB® では、x-y 平面に引かれたグリッド上にある点の z 座標によって表面を定義し、隣接する点を結ぶ直線を使用してこれを表します。関数 mesh
と関数 surf
によって表面を 3 次元で表示します。
mesh
では、定義点を結ぶラインのみに色の付いたワイヤーフレームの表面が描かれます。surf
では、点を結ぶラインと表面の構成面が色彩表示されます。
MATLAB では、Figure のカラーマップのインデックスに z データ値をマッピングすることにより表面を彩色します。
2 変数関数の可視化
2 変数関数 z = f (x,y) を表示するには、
関数の領域をカバーするように、それぞれ行と列を繰り返し使って
X
とY
行列を作成します。X
とY
を使って関数を評価し、グラフ化します。
関数 meshgrid
は、2 変数関数の実行に用いるために、単一のベクトルまたは 2 つのベクトル x
と y
で指定される領域を行列 X
と Y
に変換します。X
の行はベクトル x
のコピーで、Y
の列はベクトル y
のコピーです。
関数 sinc
のグラフ化
この例では、2 次元の関数 sinc
、sin(R)/R を x および y 方向で実行しグラフ化する方法を示します。R は、行列の中心にある原点からの距離です。eps
(非常に小さい値) を追加すると、R = 0
の点でメッシュに穴が開くのを防ぐことができます。
[X,Y] = meshgrid(-8:.5:8); R = sqrt(X.^2 + Y.^2) + eps; Z = sin(R)./R; mesh(X,Y,Z)
既定では、MATLAB® は現在のカラーマップを使用してメッシュを彩色します。
色の付いた表面プロット
この例では、関数 sinc
を表面プロットとしてグラフ化し、カラーマップを選択し、カラー バーを付加して、データを色にマッピングする方法を示します。
表面プロットは、四角形の面が色付けされることを除いて、メッシュ プロットに似ています。面の色は、Z
の値とカラー マップによって決定されます (colormap は、順番付けられた色のリストです)。
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
surf(X,Y,Z)
colormap hsv
colorbar
表面の透明化
この例では、曲面の面を可変の程度で透明にする方法を示します。透明性 (alpha 値とも呼ばれる) は、オブジェクト全体に対して指定されるか、またはカラーマップと同様に機能する alphamap
に基づきます。
[X,Y] = meshgrid(-8:.5:8);
R = sqrt(X.^2 + Y.^2) + eps;
Z = sin(R)./R;
surf(X,Y,Z)
colormap hsv
alpha(.4)
MATLAB® は、面の alpha 値が 0.4 である表面を表示します。alpha 値の範囲は 0 (完全に透明) から 1 (不透明) です。
表面プロットをライトで照らす
この例では、前の例と同じ表面を使い、赤色にカラーリングし、メッシュ ラインを除去します。light オブジェクトは、「カメラ」の左側に付加されます (カメラは、表面を見ている空間内の位置です)。
[X,Y] = meshgrid(-8:.5:8); R = sqrt(X.^2 + Y.^2) + eps; Z = sin(R)./R; surf(X,Y,Z,'FaceColor','red','EdgeColor','none') camlight left; lighting phong
ライティングは、方向性のある光源によってオブジェクトを照らす手法です。この手法は、表面の形状に見やすい微妙な違いを与えます。ライティングは、3 次元グラフに現実味を加えるためにも用いることができます。
表面の操作
Figure ツール バーとカメラ ツール バーは、3 次元グラフィックスを対話的に調査する方法を提供します。カメラ ツール バーは、Figure ツール バーの [表示] メニューから [カメラのツール バー] を選択することにより表示します。
次の図は、両方のツール バーと [3 次元回転] ツールが選択されていることを示します。
これらのツールを使って、カメラを表面オブジェクトの周囲で回転、拡大、ライティングの追加、その他のビュー操作をコマンドを実行せずに行うことができます。