| MATLAB Function Reference | ![]() |
表示
surface(Z) surface(Z,C) surface(X,Y,Z) surface(X,Y,Z,C) surface(...'PropertyName',PropertyValue,...) h = surface(...)
surface は、Surfaceグラフィックスオブジェクトを作成するための低水準関数です。Surfaceは、行列要素の行と列のインデックスを x 座標と y 座標として、各要素の値を z 座標として使って作成した行列データのプロットです。
surface(Z)
は、行列 Z で指定した Surface をプロットします。ここで、Z は、幾何学的に長方形グリッドで定義した一価関数です。
surface(Z,C)
は、Z で指定した Surface をプロットし、C のデータで着色します("例題"を参照)。
surface(X,Y,Z)
は、X, Y, Z で指定したパラメトリックなサーフェスを、Cで指定した色でプロットします。
surface(X,Y,Z,C)
は、C = Zとして使うので、色は、x-y平面からのサーフェスの高さに比例します。
surface(x,y,Z) と surface(x,y,Z,C)
は、最初の2つの行列引数をベクトルで置き換えたもので、[m,n] = size(Z) のとき、length(x) = n で、length(y) = m でなければなりません。この場合、Surface の各面の頂点は、(x(j),y(i),Z(i,j)) になります。x は、Z の列に対応し、y は、Z の行に対応することに注意してください。パラメトリックなサーフェスの詳細な説明は、関数 surf を参照してください。
surface(...' は、PropertyName',PropertyValue,...)
X, Y, Z, C に加えて、プロパティ名とプロパティ値の組合わせを引数として、Surface のプロパティを指定します。これらのプロパティは、"Surfaceのプロパティ" の節に記述されています。
h = surface(...)
は、Surface オブジェクトのハンドル番号を出力します。
注意
surf や mesh のような高水準の領域作成関数と異なり、surface は、Figure や Axes の NextPlotプロパティの設定に従いません。カレントの Axes に Surface オブジェクトを描画するだけです。
カラーデータ(C)を指定しない場合、MATLAB は、Surface の着色の指定に行列(Z)を使います。この場合、色は、Z の値に比例します。Surface の領域を定義するデータとは別に、Surface の着色のために別々の行列を指定することができます。
プロパティ名とプロパティ値の組合わせ、構造体配列、セル配列としてプロパティを指定することができます(これらのデータタイプの指定方法の例は、set と get を参照してください)。
surface は、XData, YData, ZData, CData プロパティに対するプロパティ名を省略することができます。たとえば、
surface('XData',X,'YData',Y,'ZData',Z,'CData',C)
surface(X,Y,Z,C)
surface(Z)
MATLAB は、ユーザが、指定するかのようにデータのプロパティを割り当てます。
surface('XData',[1:size(Z,2)],...
'YData',[1:size(Z,1)],...
'ZData',Z,...
'CData',Z)
axis, caxis, colormap, hold, shading, view コマンドは、Surfaceに影響を与えるプロパティを設定します。オブジェクト作成後、set や get を使って、プロパティ値の設定や参照ができます。
例題
つぎの例は、M-ファイルpeaks を使って、Surface を作成します。そして、clown のイメージを使って着色します。ZData は、49行49列の行列で、 CDataは、200行320列の行列です。異なる次元の ZData とCData を使うために、Surface の FaceColor を texturemap に設定しなければなりません。
load clown surface(peaks,flipud(X),... 'FaceColor','texturemap',... 'EdgeColor','none',... 'CDataMapping','direct') colormap(map) view(-35,45)
![]()
プロパティ名とプロパティ値を組合わせて作成した形式 surface(Z,C) の使用に注目してください。
clownのデータ(X)は、MATLABが、通常 'ij' 形式の軸の番号付けと directCDataMapping を用いて表示する image コマンドによって表示されるので、この例題は、flipudを使って、垂直方向にデータを反転し、CDataMappingプロパティをdirectに設定します。
参考
ColorSpec, mesh, patch, pcolor, surf
オブジェクトの階層構造
デフォルトプロパティの設定
Axes, Figure, Rootレベルで、デフォルトのSurfaceオブジェクトプロパティを設定することができます。
set(0,'DefaultSurfaceProperty',PropertyValue...) set(gcf,'DefaultSurfaceProperty',PropertyValue...) set(gca,'DefaultSurfaceProperty',PropertyValue...)
ここで、Propertyは、ユーザが設定するデフォルト値をもつSurfaceのプロパティ名で、PropertyValueはユーザが指定する値です。setとgetを使ってSurfaceのプロパティにアクセスができます。
プロパティリスト
つぎの表は、Surfaceプロパティと簡単な説明を示したものです。プロパティ名は、詳細な説明にリンクされています。
| プロパティ名 |
プロパティの詳細 |
プロパティ値 |
| オブジェクトを定義するデータ | ||
XData |
サーフェスの頂点の x-座標 |
値: ベクトル、または、行列 |
YData |
サーフェスの頂点の y-座標 |
値: ベクトル、または、行列 |
ZData |
サーフェスの頂点の z-座標 |
値: 行列 |
| カラーの設定 | ||
CData |
カラーデータ |
値: スカラ、ベクトル、または、行列 デフォルト: [] 空行列 |
CDataMapping |
CData をカラーマップへのマッピングの制御 |
値: scaled, directデフォルト: scaled |
EdgeColor |
フェースエッジのカラー |
値: ColorSpec, none, flat, interpデフォルト: ColorSpec |
FaceColor |
フェースのカラー |
値: ColorSpec, none, flat, interpデフォルト: ColorSpec |
MarkerEdgeColor |
マーカのカラーまたは塗り潰されたマーカのエッジのカラー |
値: ColorSpec, none, autoデフォルト: auto |
MarkerFaceColor |
閉じた形のマーカを塗り潰すカラー |
値: ColorSpec, none, autoデフォルト: none |
| 透明度の設定 |
||
AlphaData |
透明度データ |
double、または、uint8 の m 行 n 列の行列 |
AlphaDataMapping |
透明度マッピング方法 |
none, direct, scaledデフォルト: scaled |
EdgeAlpha |
パッチ面のエッジの透明度 |
scalar, flat, interpデフォルト: 1 (不透明) |
FaceAlpha |
パッチ面の透明度 |
scalar, flat, interp, textureデフォルト: 1 (不透明) |
| Lightの影響の制御 | ||
AmbientStrength |
周囲光の強度 |
値: 0以上、1以下のスカラ デフォルト: 0.3 |
BackFaceLighting |
カメラからの面のライティングの制御 |
値: unlit, lit, reverselitデフォルト: reverselit |
DiffuseStrength |
拡散光の強度 |
値: 0以上、1以下のスカラ デフォルト: 0.6 |
EdgeLighting |
エッジのライティングの手法 |
値: none, flat, gouraud, phongデフォルト: none |
FaceLighting |
面のライティングの手法 |
値: none, flat, gouraud, phongデフォルト: none |
NormalMode |
MATLAB指定、または、ユーザ指定の法線ベクトル |
値: auto, manualデフォルト: auto |
SpecularColorReflectance |
鏡面反射光のカラー |
値: 0以上、1以下のスカラ デフォルト: 1 |
SpecularExponent |
鏡面反射光の粗さ |
値: 0以上、1以下のスカラ デフォルト: 10 |
SpecularStrength |
鏡面光の強度 |
値: 0以上、1以下のスカラ デフォルト: 0.9 |
VertexNormals |
頂点の法線ベクトル |
値: matrix |
| エッジとマーカの定義 | ||
LineStyle |
5種類のラインスタイルから選択 |
値: -, --, :, -., noneデフォルト: - |
LineWidth |
ポイント単位のエッジの幅 |
値: scalar デフォルト: 0.5 points |
Marker |
データ点でプロットするマーカシンボル |
値: Markerプロパティを参照デフォルト: none |
MarkerSize |
ポイント単位のマーカサイズ |
値: ポイント単位のサイズ デフォルト: 6 |
| 外観の制御 | ||
Clipping |
Axesで作成される長方形へのクリッピング |
値: on, offデフォルト: on |
EraseMode |
Surfaceの描画と消去の方法 (アニメーションに対して役立ちます) |
値: normal, none, xor, backgroundデフォルト: normal |
MeshStyle |
すべてのエッジのラインの描画またはエッジの行、または、列のみの描画の指定 |
値: both, row, columnデフォルト: both |
SelectionHighlight |
(Selected プロパティがonに設定されているとき)選択したときに強調する |
値: on, off デフォルト: on |
Visible |
Surfaceの可視化の指定 |
値: on, off デフォルト: on |
| オブジェクトへのアクセスの制御 | ||
HandleVisibility |
Surfaceのハンドルが他の関数に対して、視覚可能であるかどうかを指定 |
値: on, callback, offデフォルト: on |
HitTest |
Surfaceがカレントオブジェクトになることができるかどうかを指定(FigureのCurrentObjectプロパティを参照) |
値: on, off デフォルト: on |
| コールバックルーチンの実行に関するプロパティ | ||
|
コールバックルーチン割り込みの取り扱い方法の指定 |
値: cancel, queueデフォルト: queue |
|
Surface上でマウスボタンを押したときに実行するコールバックルーチンの定義 |
値: 文字列 デフォルト: '' (空文字列) |
|
Surfaceが作成されたときに実行するコールバックルーチンの定義 |
値: 文字列 デフォルト: '' (空文字列) |
|
(close、または、deleteにより)Surfaceが削除されたときに実行するコールバックルーチンの定義 |
値: 文字列 デフォルト: '' (空文字列) |
|
コールバックルーチンが割り込むかどうかを指定 |
値: on, off デフォルト: on (割り込み可能) |
|
コンテキストメニューとSurfaceの対応付け |
値: Uicontrextmenuの ハンドル番号 |
| Surfaceの一般的な情報 | ||
Children |
Surfaceオブジェクトは子オブジェクトをもちません |
値: [] (空行列) |
Parent |
Surfaceオブジェクトの親オブジェクトは、常に、Axes オブジェクトです。 |
値: axes ハンドル番号 |
Selected |
Surfaceが"選択された"状態かどうかを検出 |
値: on, off デフォルト: on |
Tag |
ユーザ指定のラベル |
値: 任意の文字列 デフォルト: '' (empty string) |
Type |
グラフィックスオブジェクトのタイプ(参照のみ) |
値: the string 'surface' |
|
ユーザ定義データ |
値: 任意の行列 デフォルト: [] (空行列) |
| surf2patch | Surface Properties | ![]() |