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 | ![]() |