| MATLAB Function Reference | ![]() |
表示
surf(Z) surf(X,Y,Z) surf(X,Y,Z,C) surf(...,'PropertyName',PropertyValue) surfc(...) h = surf(...) h = surfc(...)
詳細
surf と surfc は、数学関数を長方形領域上で視覚化する関数です。surf と surfc は、Z、または、C で指定したカラーを用いて、X, Y, Z で指定した着色されたパラメトリックなサーフェスを作成します
surf(Z)
は、[m,n] = size(Z)のとき、x = 1:nとy = 1:m を使って、行列Z の z 成分から3次元シェーディングサーフェスを作成します。高さ Z は、幾何学的に長方形グリッドで定義された一価関数です。Z は、Surface オブジェクトの高さと同様なカラーデータを指定するので、カラーはサーフェスの高さに比例します。
surf(X,Y,Z)
は、Surfaceオブジェクトの高さとカラーデータに対する Z を使って、シェーディングした Surface オブジェクトを作成します。X と Y は、Surface オブジェクトの x 成分と y 成分を定義するベクトル、または、行列です。X と Y がベクトルの場合、[m,n] = size(Z)のとき、length(X) = n で、length(Y) = m です。この場合、Surface の各面の頂点は、 です。
surf(X,Y,Z,C)
は、C で指定した色をもつシェーディングされたサーフェスを作成します。MATLAB は、カレントのカラーマップから色を得るために、このデータの線形変換を行います。
は、Surfaceプロパティ とデータを指定します。surf(...,'PropertyName',PropertyValue)
surfc(...)
は、Surface オブジェクトの下部にコンタープロットを描画します。
h = surf(...) と h = surfc(...) は、Surface グラフィックスオブジェクトのハンドル番号を出力します。
アルゴリズム
概念的には、パラメトリックなサーフェスは、長方形領域上を連続的に変化する2つの独立変数 i と j でパラメータ化されます。たとえば、1
i
m and 1
j
n のように変化します。サーフェスは、3つの関数 x(i,j), y(i,j), z(i,j) で与えられます。i と jが整数値のとき、整数グリッド点で長方形グリッドを定義します。関数x(i,j), y(i,j), z(i,j) は、3個のm 行 n 列の行列 X, Y,Z になります。サーフェスの色は、行列 C で記述される4番目の関数 c(i,j) で与えます。
長方形グリッドの各グリッド点は、その点に最も近い4つの点を結んだものと考えることができます。
i-1,j | i,j-1 - i,j - i,j+1 | i+1,j
この長方形グリッドには、辺を共有するパッチが4つあります。これを他の方法で表わすために、[X(:) Y(:) Z(:)] は、3次元空間に与えた3要素の点のリストを出力します。長方形領域の内部の各点は、行列のインデックスから得られる4つの近接点と結合されています。サーフェスのエッジ上の点は、3つの近接点がありますが、グリッドの4隅の点には2つの近接点しかありません。このようにして、四辺形のメッシュ、あるいは quad-meshを定義します。
サーフェスの色は、2つの方法で指定できます。頂点の値による方法と、各パッチの中心の値による方法があります。一般的な設定では、サーフェスは、xと yの一価関数である必要はありません。さらに、辺を共有するサーフェスのパッチは、平面である必要はありません。たとえば、極座標系、円筒座標系、球面座標系で定義されるサーフェスを表示することができます。
関数 shading は、シェーディングの設定をします。シェーディングが、interp の場合、Cは、X, Y, Z と同じサイズでなければなりません。これは頂点の色を指定します。パッチ内の色は、ローカル座標の双一次関数になります。シェーディングが、faceted(デフォルト)、または、flat の場合、C(i,j) は、パッチ内に一定色を指定します。
(i,j) - (i,j+1) | C(i,j) | (i+1,j) - (i+1,j+1)
この場合、Cは、X, Y, Z と同じサイズで、最終行と最終列は無視されます。つまり、行と列の次元は、X, Y, Z の列と行の次元より1つ小さくできます。
surf と surfc は、view(3) を使って、視点を指定します。
軸のラベルは、X, Y, Z の範囲、または、Axesの XLimMode, YLimMode, ZLimMode プロパティ(関数 axis で設定します)のカレントの設定で決定されます。
色のスケーリングは、C の範囲、または、Axesの CLim と ClimMode プロパティ(関数 caxis で設定します)で決められます。スケーリングされた色の値は、カレントのカラーマップのインデックスとして使われます。
例題
関数 peaks のサーフェスとコンタープロット図を表示します。
[X,Y,Z] = peaks(30);surfc(X,Y,Z)colormap hsv axis([-3 3 -3 3 -10 5])
![]()
Hadamard 行列の+1と-1のパターンを球面に彩色します。
k = 5; n = 2^k-1; [x,y,z] =sphere(n); c =hadamard(2^k); surf(x,y,z,c); colormap([1 1 0; 0 1 1]) axis equal
![]()
参考
axis, caxis, colormap, contour, mesh, pcolor, shading, view
Surfaceグラフィックスオブジェクトのプロパティ
| support | surf2patch | ![]() |