MATLAB Function Reference    
patch

Patchグラフィックスオブジェクトの作成

表示

詳細

patch は、Patchグラフィックスオブジェクトを作るための低水準のグラフィック関数です。Patchオブジェクトは、頂点の座標で定義される1つまたは複数の多角形です。Patchの色とライティングを指定することができます。Patch オブジェクトの使用についての詳細は、"パッチを使った3次元モデルの作成"を参照してください。

patch(X,Y,C) は、塗りつぶされた2次元の多角形を、カレントのAxesに追加します。XYの要素は、多角形の頂点を指定します。XYが行列の場合は、MATLABは1列毎に、1個の多角形を描画します。Cは、Patchの色を決定します。これは単一のColorSpecであり、1つの面に対して1つの色、または1つの頂点に対して1つの色です("注意"を参照)。Cが1行3列ベクトルの場合、色を直接指定するRGBの3要素と仮定されます。

patch(X,Y,Z,C) は、3次元座標にPatchを作成します。

patch(FV) は、構造体 FV を使って、パッチを作成します。この構造体は、フィールド verticesfaces、そして、オプションとして、facevertecdata を含んでいます。これらの構造体は、Vertices, Faces, FaceVertexCData のパッチプロパティに対応します。

patch(...'PropertyName',PropertyValue...) は、プロパティ名とプロパティ値の組合わせを引数X, Y, (Z), C の後に続けて、プロパティを指定します。

patch('PropertyName',PropertyValue,...) は、プロパティ名とプロパティ値の組合わせを使ってすべてのプロパティを指定します。この型では、色の指定を省略することができます。これは、ユーザがFaceColorEdgeColorプロパティに値を明示的に割り当てなければ、MATLABはデフォルトの面の色とエッジの色を使うからです。この型は、xyz軸の代わりに、FacesVerticesプロパティを使って、Patchを指定することもできます。詳細は、"例題"を参照してください。

handle = patch(...) は、作成されるPatchオブジェクトのハンドル番号を出力します。

注意

fillareaのような高水準の塗りつぶし等を行う関数と異なり、patchは、FigureAxesNextPlotプロパティの設定をチェックしません。カレントのAxesにPatchオブジェクトを追加するだけです。

座標データが閉じた多角形を定義していなければ、patchは多角形を閉じます。データは、凹面や交点をもつ多角形を定義することができます。しかし、個々のPatchの面のエッジが交差する場合は、面は完全に塗りつぶされたり、塗りつぶされなかったりします。この場合、面を小さい多角形に分割することをお勧めします。

Patchのプロパティの設定

ユーザは、プロパティ名とプロパティ値の組合わせ、構造体配列、またはセル配列として、プロパティを指定できます(これらのデータタイプの指定方法の例は、リファレンスページのsetおよびgetの項を参照してください)。

カラーを指定するPatchのプロパティは、2つあります。

CDataFaceVertexCDataプロパティには、インデックス付き、またはトゥルーカラー(RGB)値としてカラーデータを与えることができます。カラーの指定法は、CDataFaceVertexCDataプロパティの記述を参照してください。

インデックス付きカラーデータは、カラーマップへの直接のインデックスか、データをカラーマップ全体へ線形に写像するスケーリング値を表わします(このスケーリングの詳細は、関数caxisを参照してください)。CDataMappingプロパティは、インデックス付きカラーデータをMATLABがどのように解釈するかを決定します。

カラーデータの解釈

Patchのカラーを、つぎのように指定することができます。

つぎの表は、CDataおよびFaceVertexCDataプロパティで定義したカラーデータを、MATLABがどのように解釈するかをまとめたものです。

CDataプロパティの解釈

[X,Y,Z]データ
必要なCData
得られる結果
次元
インデックス付き
トォルーカラー

m行n列
スカラ
1*1*3
すべてのPatchの面に対して、指定した単色のみを使います。エッジは単色です。
m-by-n
1行n列
(n >= 4)
1*n*3
Patchの各面に対して単色を使います。エッジは単色のみです。
m行n列
m行n列
m*n*3
各頂点にカラーを割り当てます。Patchの面は平坦であるか(単色)、内挿されます。エッジは、単色であるか、内挿されます。

FaceVertex CDataプロパティの解釈

頂点

必要なFaceVertexCData
得られる結果
次元
次元
インデックス付き
トォルーカラー

m行n列
k行3列
スカラ
1行3列
すべてのPatchの面について、指定した単色を使います。エッジは単色のみです。
m行n列
k行3列
k行1列
k行3列
Patchの各面について、単色を使います。エッジは単色のみです。
m行n列
k行3列
m行1列
m行3列
各頂点にカラーを割り得てます。Patchの面は平坦である(単色)か、内挿されます。エッジは、単色であるか、内挿されます。

例題

つぎの例では、2つの異なる手法を使って、Patchオブジェクトを作成します。

X, Y,Z座標の指定

最初の試みは、各頂点の座標を指定することです。この例では、座標データは2つの三角形の面を指定し、それぞれは3つの頂点をもちます。トゥルーカラーを使って、上部の面を白、下部の面をグレイに設定します。

各面は、他の面と2つの頂点を共有していることに注意してください(V1-V4とV3-V5)。

頂点と面の指定

Verticesプロパティは、Patchを定義する一意的な各頂点の座標を含んでいます。Facesプロパティは、これらのPatchの各面を作るために、各頂点をどのように接続するかを指定します。この例では、2つの頂点は同じ位置を共有しているので、ユーザは6個の頂点のうち4個のみを指定する必要があります。各行は各頂点のx, y, z座標です。

指定した順序で頂点を接続することにより定義された2つの面のみがあります。

面のカラーを指定するために、2つのRGBカラーの定義を含む2行3列行列を定義します。

2つの面と2色を使って、MATLABはフラットシェーディングを使って各面を色付けします。これは、面/頂点を設定する方法は、低レベルの関数コールとしてのみ(プロパティ名とプロパティ値の組合わせの指定によってのみ)使用可能なので、FaceColorプロパティをflatに設定しなければならないことを意味します。

FaceColorプロパティと同様に、Faces, Vertices, FaceVertexCDataを指定して、Patchを作成します。

一意的な頂点とそれらの接続行列のみを指定することで、多くの面をもつPatchに対するデータのサイズをかなり減らすことができます。定義の方法は、Faces, Vertices, FaceVertexCData プロパティに関する記述を参照してください。

MATLABでは、各面が同じ数の頂点をもつ必要はありません。同じ数の頂点をもたない場合、要素数を合わせるために不定値(NaNs)を行列Facesの要素として加えます。閉じていない面をもつPatchを定義するには、接続したくない頂点を定義する行列Verticesの行にNaNsを加えてください。

オブジェクトの階層構造

デフォルトのプロパティの設定

Axes, Figure, Rootレベルで、Patchのデフォルトのプロパティを設定することができます。

PropertyName は、Patchのプロパティ名で、PropertyValueはユーザが指定する値です。Patchのプロパティにアクセスするには、setおよびgetを使用してください。

プロパティリスト

つぎの表は、Patchのプロパティと簡単な説明が示されています。プロパティ名は、詳細な説明とリンクされています。

プロパティ名
プロパティの詳細
プロパティ値
オブジェクトを定義するデータ
Faces
Vertices を定義する頂点の接続行列
値: m行n列の行列
デフォルト: [1,2,3]
Vertices
頂点のx-, y-, and z-座標の行列(Facesと共に使用)
値: 行列
デフォルト: [0,1;1,1;0,0]
XData
Patchの頂点のx-座標
値: ベクトルまたは行列
デフォルト: [0;1;0]
YData
Patchの頂点のy-座標
値:ベクトルまたは行列
デフォルト: [1;1;0]
ZData
Patchの頂点のz-座標
値: ベクトルまたは行列
デフォルト: [] 空行列
カラーの設定
CData
XData/YData/ZDataで使用するカラーデータ
値: スカラー、ベクトル、行列のいずれか
デフォルト: [] 空行列
CDataMapping
CDataのカラーマップへのマッピング方法
値: scaled, direct
デフォルト: scaled
EdgeColor
面のエッジのカラー
値: ColorSpec, none, flat, interp
デフォルト: ColorSpec
FaceColor
面のカラー
値: ColorSpec, none, flat, interp
デフォルト: ColorSpec
FaceVertexCData
Faces/Verticesで使用されるカラーデータ
値: matrix
デフォルト: [] 空行列
MarkerEdgeColor
マーカのカラーまたは塗り潰されたマーカに対するエッジのカラー
値: ColorSpec, none, auto
デフォルト: auto
MarkerFaceColor
閉じた形のマーカを塗り潰すカラー
値: ColorSpec, none, auto
デフォルト: none
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
鏡面反射光の粗さ
値: 1以上のスカラ 1
デフォルト: 10
SpecularStrength
鏡面光の強度
値: 0以上、1以下のスカラ
デフォルト: 0.9
VertexNormals
頂点の法線ベクトル
値: 行列
エッジとマーカの定義
LineStyle
5種類のラインスタイルから選択
値: -, --, :, -., none
デフォルト: -
LineWidth
エッジの幅(ポイント単位)
値: スカラ
デフォルト: 0.5 ポイント
Marker
データ点にプロットするマーカシンボル
値: Marker プロパティを参照
デフォルト: none
MarkerSize
マーカのサイズ(ポイント単位)
値: ポイント単位のサイズ
デフォルト: 6
透明度の指定


AlphaDataMapping
透明度マッピング法
none, direct, scaled
デフォルト: scaled
EdgeAlpha
パッチ面のエッジの透明度
scalar, flat, interp
デフォルト: 1 (不透明)
FaceAlpha
パッチ面の透明度
スカラ, flat, interp
デフォルト: 1 (不透明)
FaceVertexAlphaData
面と頂点の透明度データ
m行1列の行列
外観を制御するプロパティ
Clipping
Axesで作成される長方形へのクリッピング
値: on, off
デフォルト: on
EraseMode
Patchの描画と消去の方法(アニメーションに対して有効)
値: normal, none, xor, background
デフォルト: normal
SelectionHighlight
Selectedプロパティが onに設定されているとき)選択したときに強調されるパッチ
値: on, off
デフォルト: on
Visible
Patchの可視化の指定
値: on, off
デフォルト: on
オブジェクトへのアクセスの制御
HandleVisibility
Patchのハンドルが他の関数に対して、視覚可能であるかどうかを指定
値: on, callback, off
デフォルト: on
HitTest
Patchがカレントオブジェクトになることができるかどうかを指定(FigureのCurrentObjectプロパティを参照)
値: on, off
デフォルト: on
コールバックルーチンの実行に関するプロパティ
BusyAction
コールバックルーチン割り込みの取り扱い方法の指定
値: cancel, queue
デフォルト: queue
ButtonDownFcn
Patch上でマウスボタンを押したときのコールバックルーチンの定義
値: 文字列
デフォルト: '' (空の文字列)
CreateFcn
Patchが作成されたときに実行するコールバックルーチンの定義
値: 文字列
デフォルト: '' (空の文字列empty string)
DeleteFcn
(close または deleteにより)Patchが削除されたときに実行するコールバックルーチンの定義
値: 文字列
デフォルト: '' (空の文字列)
Interruptible
コールバックルーチンが中断されるかどうかを指定
値: on, off
デフォルト: on (中断可能)
UIContextMenu
コンテキストメニューとPatchの対応付け
値: Uicontrextmenu のハンドル
Patchの一般的な情報
Children
patchオブジェクトは、子オブジェクトをもちません。
値: [] (空行列)
Parent
Patchオブジェクトの親オブジェクトは、常に、Axesオブジェクトです。
値: axes のハンドル
Selected
Patchが"選択された"状態かどうかを検出
値: on, off
デフォルト: on
Tag
ユーザ指定のラベル
値: 任意の文字列
デフォルト: '' (空の文字列)
Type
グラフィックスオブジェクトのタイプ(参照のみ)
値: 文字列 'patch'
UserData
ユーザ指定のデータ
値: 任意の行列
デフォルト: [] (空行列)

参考

area, caxis, fill, fill3, isosurface, surface


 pascal Patch Properties