MATLAB Function Reference | ![]() ![]() |
表示
patch(X,Y,C) patch(X,Y,Z,C) patch(FV) patch(...'PropertyName',PropertyValue...) patch('PropertyName',PropertyValue...) PN/PV pairs only handle = patch(...)
詳細
patch
は、Patchグラフィックスオブジェクトを作るための低水準のグラフィック関数です。Patchオブジェクトは、頂点の座標で定義される1つまたは複数の多角形です。Patchの色とライティングを指定することができます。Patch オブジェクトの使用についての詳細は、"パッチを使った3次元モデルの作成"を参照してください。
patch(X,Y,C)
は、塗りつぶされた2次元の多角形を、カレントのAxesに追加します。X
とY
の要素は、多角形の頂点を指定します。X
とY
が行列の場合は、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
を使って、パッチを作成します。この構造体は、フィールド vertices
、faces
、そして、オプションとして、facevertecdata
を含んでいます。これらの構造体は、Vertices
, Faces
, FaceVertexCData
のパッチプロパティに対応します。
patch(...'PropertyName',PropertyValue...)
は、プロパティ名とプロパティ値の組合わせを引数X
, Y
, (Z
), C
の後に続けて、プロパティを指定します。
patch('PropertyName',PropertyValue,...)
は、プロパティ名とプロパティ値の組合わせを使ってすべてのプロパティを指定します。この型では、色の指定を省略することができます。これは、ユーザがFaceColor
やEdgeColor
プロパティに値を明示的に割り当てなければ、MATLABはデフォルトの面の色とエッジの色を使うからです。この型は、x、y、z軸の代わりに、Faces
とVertices
プロパティを使って、Patchを指定することもできます。詳細は、"例題"を参照してください。
handle = patch(...)
は、作成されるPatchオブジェクトのハンドル番号を出力します。
注意
fill
やarea
のような高水準の塗りつぶし等を行う関数と異なり、patch
は、FigureとAxes のNextPlot
プロパティの設定をチェックしません。カレントのAxesにPatchオブジェクトを追加するだけです。
座標データが閉じた多角形を定義していなければ、patch
は多角形を閉じます。データは、凹面や交点をもつ多角形を定義することができます。しかし、個々のPatchの面のエッジが交差する場合は、面は完全に塗りつぶされたり、塗りつぶされなかったりします。この場合、面を小さい多角形に分割することをお勧めします。
Patchのプロパティの設定
ユーザは、プロパティ名とプロパティ値の組合わせ、構造体配列、またはセル配列として、プロパティを指定できます(これらのデータタイプの指定方法の例は、リファレンスページのset
およびget
の項を参照してください)。
CData
- x, y, z座標(XData
, YData
, ZData
)を指定するときに使います。FaceVertexCData
- 頂点と接続行列(Vertices
とFaces
)を指定するときに使います。CData
とFaceVertexCData
プロパティには、インデックス付き、またはトゥルーカラー(RGB)値としてカラーデータを与えることができます。カラーの指定法は、CData
とFaceVertexCData
プロパティの記述を参照してください。
インデックス付きカラーデータは、カラーマップへの直接のインデックスか、データをカラーマップ全体へ線形に写像するスケーリング値を表わします(このスケーリングの詳細は、関数caxis
を参照してください)。CDataMapping
プロパティは、インデックス付きカラーデータをMATLABがどのように解釈するかを決定します。
カラーデータの解釈
つぎの表は、CData
およびFaceVertexCData
プロパティで定義したカラーデータを、MATLABがどのように解釈するかをまとめたものです。
CDataプロパティの解釈
FaceVertex CDataプロパティの解釈
例題
つぎの例では、2つの異なる手法を使って、Patchオブジェクトを作成します。
XData
, YData
, ZData
, CData
プロパティ)を指定します。Vertices
, Faces
, FaceVertexCData
,FaceColor
プロパティ)を指定します。X, Y,Z座標の指定
最初の試みは、各頂点の座標を指定することです。この例では、座標データは2つの三角形の面を指定し、それぞれは3つの頂点をもちます。トゥルーカラーを使って、上部の面を白、下部の面をグレイに設定します。
x = [0 0;0 1;1 1]; y = [1 1;2 2;2 1]; z = [1 1;1 1;1 1]; tcolor(1,1,1:3) = [1 1 1]; tcolor(1,2,1:3) = [.7 .7 .7]; patch(x,y,z,tcolor)
各面は、他の面と2つの頂点を共有していることに注意してください(V1-V4とV3-V5)。
頂点と面の指定
Vertices
プロパティは、Patchを定義する一意的な各頂点の座標を含んでいます。Faces
プロパティは、これらのPatchの各面を作るために、各頂点をどのように接続するかを指定します。この例では、2つの頂点は同じ位置を共有しているので、ユーザは6個の頂点のうち4個のみを指定する必要があります。各行は各頂点のx, y, z座標です。
vert = [0 1 1;0 2 1;1 2 1;1 1 1];
指定した順序で頂点を接続することにより定義された2つの面のみがあります。
fac = [1 2 3;1 3 4];
面のカラーを指定するために、2つのRGBカラーの定義を含む2行3列行列を定義します。
tcolor = [1 1 1;.7 .7 .7];
2つの面と2色を使って、MATLABはフラットシェーディングを使って各面を色付けします。これは、面/頂点を設定する方法は、低レベルの関数コールとしてのみ(プロパティ名とプロパティ値の組合わせの指定によってのみ)使用可能なので、FaceColor
プロパティをflat
に設定しなければならないことを意味します。
FaceColor
プロパティと同様に、Faces
, Vertices
, FaceVertexCData
を指定して、Patchを作成します。
patch('Faces',fac,'Vertices',vert,'FaceVertexCData',tcolor,... 'FaceColor','flat')
一意的な頂点とそれらの接続行列のみを指定することで、多くの面をもつPatchに対するデータのサイズをかなり減らすことができます。定義の方法は、Faces
, Vertices
, FaceVertexCData
プロパティに関する記述を参照してください。
MATLABでは、各面が同じ数の頂点をもつ必要はありません。同じ数の頂点をもたない場合、要素数を合わせるために不定値(NaNs
)を行列Faces
の要素として加えます。閉じていない面をもつPatchを定義するには、接続したくない頂点を定義する行列Vertices
の行にNaNs
を加えてください。
オブジェクトの階層構造
デフォルトのプロパティの設定
Axes, Figure, Rootレベルで、Patchのデフォルトのプロパティを設定することができます。
set(0,'DefaultPatchPropertyName',PropertyValue...) set(gcf,'DefaultPatchPropertyName',PropertyValue...) set(gca,'DefaultPatchPropertyName',PropertyValue...)
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 |
コールバックルーチンの実行に関するプロパティ | ||
|
コールバックルーチン割り込みの取り扱い方法の指定 |
値: cancel , queue デフォルト: queue |
|
Patch上でマウスボタンを押したときのコールバックルーチンの定義 |
値: 文字列 デフォルト: '' (空の文字列) |
|
Patchが作成されたときに実行するコールバックルーチンの定義 |
値: 文字列 デフォルト: '' (空の文字列empty string) |
|
(close または delete により)Patchが削除されたときに実行するコールバックルーチンの定義 |
値: 文字列 デフォルト: '' (空の文字列) |
|
コールバックルーチンが中断されるかどうかを指定 |
値: on , off デフォルト: on (中断可能) |
|
コンテキストメニューとPatchの対応付け |
値: Uicontrextmenu のハンドル |
Patchの一般的な情報 | ||
Children |
patchオブジェクトは、子オブジェクトをもちません。 |
値: [] (空行列) |
Parent |
Patchオブジェクトの親オブジェクトは、常に、Axesオブジェクトです。 |
値: axes のハンドル
|
Selected |
Patchが"選択された"状態かどうかを検出 |
値: on , off デフォルト: on |
Tag |
ユーザ指定のラベル |
値: 任意の文字列 デフォルト: '' (空の文字列) |
Type |
グラフィックスオブジェクトのタイプ(参照のみ) |
値: 文字列 'patch' |
|
ユーザ指定のデータ |
値: 任意の行列 デフォルト: [] (空行列) |
参考
area
, caxis
, fill
, fill3
, isosurface
, surface
![]() | pascal | Patch Properties | ![]() |