MATLAB Function Reference    

Patch Properties
プロパティの変更

つぎの2つの方法を使って、グラフィックオブジェクトプロパティを設定したり、引用したりできます。

プロパティのデフォルト値を変更するには、デフォルトプロパティ値の設定を参照してください。

Patch プロパティの記述

この節では、プロパティ名とそれらが取り得る値について説明します。中括弧で囲まれた値が、そのプロパティのデフォルト値です

AlphaDataMapping             none | direct | {scaled}

透明性を使ったマッピング法。このプロパティは、MATLABが、インデックス付きalphaデータをどのように解釈するかを決定します。このプロパティは、つぎのいずれかになります。

AmbientStrength              0以上、1以下のスカラ

周囲光の強度。このプロパティは、周囲光の強度を設定します。これは、場面全体を照らす方向性のない光源です。周囲光が視覚可能であるためには、Axesに対して少なくとも 1 つの視覚可能な Light オブジェクトがなければなりません。Axesの AmbientColorプロパティは周囲光のカラーを指定し、このカラーはAxes 内のすべてのオブジェクトについて同じです。

また、Lightオブジェクトの拡散と鏡面の強度も設定できます。DiffuseStrengthSpecularStrengthプロパティを参照してください。

BackFaceLighting             unlit | lit | {reverselit}

面のライティングのコントロール。このプロパティは、頂点の法線がカメラから離れているときの面のライティング方法を指定します。

このプロパティは、オブジェクトの内部と外部を見分けるのに役立ちます。例題は、 Using MATLAB Graphics を参照してください。

BusyAction                   cancel | {queue}

コールバックルーチンの割込みBusyActionプロパティを使って、実行中のコールバックルーチンに割込みを行うイベントの取り扱い方法をコントロールすることができます。実行中のコールバックルーチンがあれば、続いて呼び込まれるコールバックルーチンは、常にそれを中断しようとします。コールバックを実行中のオブジェクトのInterruptibleプロパティがon(デフォルト)に設定されていれば、イベントキューが処理されるつぎの点で割込みが起こります。Interruptibleプロパティがoffならば、(実行中のコールバックをもつオブジェクトの)BusyActionプロパティは、MATLABがイベントを処理する方法を指定します。つぎのような選択があります。

ButtonDownFcn                文字列

ボタンを押したときのコールバックルーチン。マウスポインタが Patch オブジェクト上にあるとき、マウスボタンを押すと実行されるコールバックルーチン。このルーチンは、有効なMATLAB 表現、または、M-ファイル名を文字列として定義してください。これらは、MATLAB ワークスペース中で実行します。

CData                        スカラ、ベクトル、行列

Patch のカラー。このプロパティは、Patchのカラーを指定します。各頂点、各面、Patch 全体に対しての単一のカラーを指定できます。MATLABが CDataを解釈する方法は、与えられたデータタイプに依存します。データが、カレントのカラーマップに線形に写像するためにスケーリングされた数値である場合、カレントのカラーマップに対するインデックスとして直接使われる整数値の場合、RGB値の配列である場合が考えられます。RGB 値はカレントのカラーマップには写像されませんが、定義されたカラーとして解釈されます。トゥルーカラーシステムでは、MATLABは RGB の3要素で定義した実際のカラーを使います。擬似カラーシステムでは、MATLABは RGB の3要素で指定したカラーに最も近いカラーを選択するために、特別なフィギュアのカラーマップとデザイアマップを使います。

つぎの 2 つの図は、座標のデータ配列、XData, YData, ZDataに関する CDataの次元を示しています。最初の図は、インデックス付きカラーの使用を示します。

2番目の図は、トゥルーカラーの使用を示します。トゥルーカラーは、各色に対して赤、緑、青の成分を定義するm*n*3 の配列を必要とします。

CDataが不定値(NaN) を含む場合、MATLAB は、その面を着色しません。

Patchの定義の他の方法については、Faces, Vertices, FaceVertexCDataプロパティも参照してください。

CDataMapping                 {scaled} | direct

直接カラーマッピング、または、スケーリングしたカラーマッピング。このプロパティは、MATLAB がPatchの色付けに使うインデックス付きカラーデータを、どのように解釈するかを決定します(CData、または、FaceVertexCDataに対して、トゥルーカラーの仕様を使う場合、このプロパティは影響しません)。

Children                     ハンドル番号からなる行列

常に空行列です。Patch オブジェクトは、子オブジェクトをもちません。

Clipping                     {on} | off

Axes に対する長方形のクリッピングClippingonのとき、MATLAB は Axesの長方形の外側にある Patch を表示しません。

CreateFcn                    文字列

オブジェクト作成中に実行されるコールバックルーチン。このプロパティは、MATLABが Patch オブジェクトを作成するときに実行するコールバックルーチンを定義します。このプロパティはデフォルト値として定義しなければなりません。たとえば、つぎのステートメント、

は、Patch オブジェクトを作成するときのFigure のDitherMapプロパティを設定するルートレベルのデフォルト値を定義します。MATLABは、Patch 作成のためのすべてのプロパティの設定後に、このルーチンを実行します。このプロパティを既存のPatch オブジェクトに対して設定しても効果はありません。

実行しているオブジェクトのCreateFcnのハンドルは、gcboを用いて得られるルートのCallbackObject プロパティを通してのみアクセスできます。

DeleteFcn                    文字列

Patch 削除時のコールバックルーチン。Patch オブジェクトを削除する(たとえば、deleteの実行やPatch を含む Axes( cla) や Figure ( clf)を消去する)とき、実行するコールバックルーチン。MATLAB は、オブジェクトのプロパティを削除する前に、このルーチンを実行するので、これらの値はコールバックルーチンに対して利用可能です。

実行しているオブジェクトのDeleteFcnのハンドルは、gcboを用いて得られるルートのCallbackObject プロパティを通してのみアクセスできます。

DiffuseStrength              0以上、1以下のスカラ

拡散光の強度。このプロパティは、Patch上のライトの拡散成分の強度を指定します。拡散光は、Axes の Lightオブジェクトから生じます。

Patch オブジェクト上の周囲光と鏡面光も指定することができます。AmbientStrength、および、SpecularStrength プロパティを参照してください。

EdgeAlpha                    {scalar = 1} | flat | interp

パッチ面のエッジの透明度。このプロパティは、つぎのいずれかを設定します。

面(flat) に対して一つのalpha値、または、頂点(interp)に対して一つのalpha値を含む行列をFaceVertexAlphaDataに設定していない場合、flat、または、interp EdgeAlphaを設定することができないことに注意してください。

EdgeColor                    {ColorSpec} | none | flat | interp

Patch エッジのカラー。このプロパティは、Patchを構成する各々の面のエッジのカラーを MATLAB がどのように着色するかを指定します。

EdgeLighting                 {none} | flat | gouraud | phong

ライティングの計算のアルゴリズム。このプロパティは、Patchのエッジ上での Light オブジェクトの効果の計算に用いるアルゴリズムを選択します。選択肢は、つぎの通りです。

EraseMode                    {normal} | none | xor | background

消去モード。このプロパティは、Patchオブジェクトを描いたり、消去する MATLAB の機能を制御するものです。消去モードは、連続的に動きを表現するアニメーションの作成に有効なものです。すなわち、アニメーションでは、パフォーマンスを改良したり、希望する効果を得るために、個々のオブジェクトを再描画する方法を制御する必要があります。

非標準消去モードで印刷します。

MATLAB は、すべてのオブジェクトの EraseModenormalに設定されているかのように、Figureを印刷します。これは、 EraseModenone,xor、または、background で設定して作成したグラフィックスオブジェクトが、印刷紙の上では、スクリーン上と異なることを意味します。スクリーン上で、MATLAB は、非常に高いレンダリングスピードを得るためにカラーの層を数学的に組み合わせを行いますが、3次元でのソートを行っていません。しかし、これらの技法は、プリント出力には使用できません。

非標準消去モードオブジェクトを含んでいるフィギュアのイメージを作成するためMATLABの getframe コマンドか、他のスクリーンキャプチャアプリケーションを使ってください。

FaceAlpha                    {scalar = 1} | flat | interp

パッチ面の透明度。このプロパティは、つぎのいずれかを設定します。

面(flat) に対して一つのalpha値、または、頂点(interp)に対して一つのalpha値を含む行列をFaceVertexAlphaDataに設定していない場合、flat、または、interp EdgeAlphaを設定することができないことに注意してください。

FaceColor                    {ColorSpec} | none | flat | interp

Patch の面のカラー。 このプロパティは、つぎのうちのいずれかです。

FaceLighting                 {none} | flat | gouraud | phong

ライティングの計算に用いるアルゴリズム。 このプロパティは、Patchの面上の Light オブジェクトの効果を計算するのに用いるアルゴリズムを選択します。選択肢は、以下の通りです。

Faces                        m行n列行列

各面を定義する頂点の接続。このプロパティは、Verticesプロパティの中のどの頂点を接続するかを指定する接続行列です。行列Faces は、各々最大 n 個の頂点をもつ m個の面を定義します。各行は 1 個の面に対する接続を指示し、行内のゼロや NaNでない要素の数が、その面に対する頂点の数を定義します。

FacesVerticesプロパティは、場合によっては、より効率的なPatch の指定法を与えます。たとえば、つぎの Patch について考えます。これは9 個の頂点で定義した 8 個の三角形の面から成ります。

対応するFacesおよびVerticesプロパティを、Patchの右側に示します。ある面が、どのように他の面と頂点を共有するかを注目してください。たとえば、5番目の頂点(V5 )は、F1、F2、F3、F6、F7、F8にそれぞれ 1 回の計 6 回使われています。頂点を共有しないと、これと同じPatch は 24 個の頂点の定義が必要です。

FaceVertexAlphaData          m1列の行列

面と頂点透明度データFaceVertexAlphaDataプロパティは、FacesVertices プロパティによって定義される面の透明度を設定します。FaceVertexAlphaDataに対して、設定された値の解釈は、データの次元に依存します。

FaceVertexAlphaData は、つぎのいずれかを設定します。

FaceVertexCData              行列

面と頂点のカラーFaceVertexCDataプロパティは、 FacesプロパティとVerticesプロパティにより定義されるPatchのカラーを設定します。そして、値は、FaceColor, EdgeColor, MarkerFaceColor,MarkerEdgeColorプロパティが適切に設定されたときに使われます。FaceVertexCDataに対して設定された値の内挿は、データの次元に依存します。

インデックス付きカラーの場合、FaceVertexCData は、つぎのようになります。

トゥルーカラーに対しては、 FaceVertexCDataは、つぎのようになります。

つぎの図は、8 個の面と 9 個の頂点をもつPatch のFaceVertexCDataプロパティの様々な型を示したものです。CDataMappingプロパティは、インデックス付きカラーを指定したときに、MATLABが FaceVertexCDataプロパティを、どのように解釈するかを決定します。

HandleVisibility             {on} | callback | off

コマンドラインユーザとGUIによるオブジェクトのハンドルへのアクセスのコントロール。このプロパティは、オブジェクトのハンドルが、その子オブジェクトの親のリスト内で視覚可能であるときに指定します。このプロパティは、(ダイアログボックスのような)ユーザインタフェースデバイスのみを含んでいるFigure内に、コマンドラインから誤って書き込むことや削除することを防ぐために有効です。

HandleVisibilityonのときは、ハンドルは常に見える状態です。

HandleVisibilitycallbackに設定すると、ハンドルは、コールバックルーチンの中から、または、コールバックにより起動される関数からは可視化されますが、コマンドラインから起動した関数の中からは可視化されません。これは、コマンドラインユーザがGUIを保護しながら、コールバックルーチンがオブジェクトのハンドルに完全にアクセスできるようにするために提供されています。

HandleVisibilityoffに設定すると、常にハンドルは視覚不可能になります。これは、コールバックルーチンが、GUIを傷つける可能性(ユーザがタイプした文字列の評価のような)がある関数を呼び込み、その関数の実行中にハンドルを一時的に隠すときに必要です。

ハンドルが子オブジェクトの親のリスト内で視覚不可能のとき、オブジェクトの階層を検索したり、ハンドルのプロパティを確認してハンドルを取得する関数は、ハンドル番号を出力できません。これらの関数には、get, findobj, gca, gcf, gco, newplot, cla, clf, closeが含まれます。

ハンドルの視覚状態がcallbackoffを使って制限されているとき、オブジェクトのハンドルは、その親のChildrenプロパティには現れません。Figureは、ルートのCurrentFigure プロパティに現れず、オブジェクトは、ルートの CallbackObjectプロパティ、または、FigureのCurrentObjectプロパティに現れません。そして、Axesは、親オブジェクトのCurrentAxesプロパティに現れません。

ルートの ShowHiddenHandlesプロパティをonに設定すると、それらのHandleVisibilityの設定(これは、HandleVisibility プロパティの値に影響を与えません)に拘わらず、すべてのハンドルを視覚可能にできます。

隠されているハンドル番号も、まだ有効です。オブジェクトのハンドルが分かっていると、そのプロパティを関数setgetで設定し、ハンドルを取り扱う関数に渡すことができます。

HitTest                      {on} | off

マウスクリックによる選択。HitTestは、Patch上でのマウスクリックの結果、Patchがカレントのオブジェクト(gco コマンドとFigureのCurrentObjectプロパティにより出力される)になり得るかどうかを指定します。HiTestoffならば、Patchをクリックすると、その下のオブジェクト(このオブジェクトを含むAxesかもしれません)を選択します。

Interruptible                {on} | off

コールバックルーチンの中断モードInterruptibleプロパティは、Patch のコールバックルーチンが続いて呼び込まれるコールバックルーチンによって、中断されるかどうかを制御します。 ButtonDownFcnに対して、定義されたコールバックルーチンのみが、Interruptible プロパティにより影響を受けます。MATLAB は、 drawnow,figure, getframe, pauseコマンドがルーチン内で実行されるときのみ、コールバックルーチンを中断することをチェックします。関係する情報は、BusyActionプロパティを参照してください。

LineStyle                    {-} | -- | : | -. | none

エッジのラインスタイル。このプロパティは、Patch のエッジのラインスタイルを指定します。使用可能なラインスタイルを以下に示します。

シンボル
ラインスタイル
-
実線(デフォルト)
--
破線
:
点線
-.
鎖線
none
線なし

各点にマーカを設定し、点と点を線で結びたくないときは、LineStyle noneを使います(Markerプロパティを参照してください)。

LineWidth                    スカラ

エッジラインの幅。Patch のエッジの幅で、ポイント数で指定します(1ポイント= 1/72 インチ)。デフォルトの LineWidth は、0.5 ポイントです。

Marker                       キャラクタ(表を参照)

マーカシンボル Markerプロパティは頂点のマークを指定します。Markerプロパティに対して、LineStyle プロパティとは独立に値を指定できます。サポートされているマーカは、以下の通りです。

マーカの設定子
詳細
+
+印
o

*
アスタリスク
.

x
x印
s
正方形
d
ダイアモンド
^
上向き三角形
v
下向き三角形
>
右向き三角形
<
左向き三角形
p
五角形
h
六角形
none
なし(デフォルト)

MarkerEdgeColor              ColorSpec | none | {auto} | flat

マーカエッジカラー。マーカのカラー、または、塗りつぶされたマーカ(円、四角形、ダイアモンド、五角形、六角形、4種類の三角形)のエッジカラー。ColorSpec は、使うカラーを定義します。noneは、カラーを指定しないので、マーカに着色せず、見えません。autoは、MarkerEdgeColorEdgeColorプロパティと同じカラーに設定します。

MarkerFaceColor              ColorSpec | {none} | auto | flat

マーカの面のカラー。閉じた形(円、四角形、ダイアモンド、五角形、六角形、4種類の三角形)のマーカを塗りつぶすカラー。 ColorSpec は使うカラーを定義します。noneはマーカの内側を透明にし、バックグランドが見えるようにします。 autoは、塗りつぶすカラーを Axes のカラーに設定するか、Axes の Colorプロパティが noneAであれば、Figureのカラーにて設定します。

MarkerSize                   ポイント数でサイズを表す

マーカのサイズ。 マーカのサイズをポイント数で指定します。MarkerSizeに対するデフォルト値は 6 ポイントです(1ポイント = 1/72インチ)。MATLAB は、指定したサイズの 1/3 のサイズで点のマーカを描きます。

NormalMode                   {auto} | manual

MATLAB による、または、ユーザ指定の法線ベクトル。このプロパティがautoの場合、MATLAB は座標データに基づき頂点の法線を計算します。ユーザが頂点の法線を指定した場合、MATLABはこのプロパティを manual にし、自身のデータを作成しません。VertexNormalsプロパティも参照してください。

Parent                       Axes のハンドル番号

Patch の親オブジェクト。Patchの親オブジェクトのハンドル番号です。Patch オブジェクトの親オブジェクトは、Patchを表示する Axes オブジェクトです。このプロパティを新しい親オブジェクトのハンドル番号に変更することで、Patchオブジェクトを他の Axes に移動できます。

Selected                     on | {off}

選択されたオブジェクト。このプロパティがonのとき、MATLAB は SelectionHighlight プロパティもonならば、オブジェクトの選択状態を示すハンドル、もしくは、破線のブロック(面の数に関係した)を表示します。たとえば、このプロパティを設定するためにButtonDownFcnを定義すると、マウスでオブジェクトを選択することができます。

SelectionHighlight           {on} | off

選択時のオブジェクトの強調Selectedプロパティが onのとき、MATLABは、つぎのように選択された状態を示します。

SelectionHighlightoffならば、MATLAB はハンドルを描きません。

SpecularColorReflectance     0 から 1 の間のスカラ

鏡面反射光のカラー。このプロパティが0 のとき、鏡面反射光のカラーは反射するオブジェクトのカラーと光源のカラーに依存します。1のときは、光源のカラー(すなわち、Light オブジェクトの Colorプロパティのみに依存します。中間の値に対しては、その割合は線形に変化します。

SpecularExponent             1以上のスカラ

鏡面反射の粗さ。 このプロパティは鏡面スポットのサイズを制御します。ほとんどが、5 から 20 の範囲の指数です。

SpecularStrength             0以上、1以下のスカラ

鏡面光の強度。このプロパティは、Patch上の鏡面光の強度を設定します。鏡面光は、Axes 内の Light オブジェクトから生じます。

Patchオブジェクト上の周囲光と拡散光の強度も指定することができます。AmbientStrengthDiffuseStrength プロパティを参照してください。

Tag                          文字列

ユーザ指定のオブジェクトのラベルTagは、ユーザ指定のラベルを使ってグラフィックスオブジェクトを識別する方法を提供します。これは、オブジェクトのハンドル番号をグローバル変数として定義したり、コールバックルーチン間で引数として渡すことを必要とする、対話的なグラフィックスプログラムを構築するときに、特に有効です。

たとえば、Patchオブジェクトを使って、 Uicontrolオブジェクト群に対する境界を作成し、Uicontrolのコールバックルーチン内で境界のカラーを変更したいとします。Patchの定義を使って、Tag を指定できます。

それから、Uicontrol のコールバックルーチン内で、Patch のハンドル番号を得るために findobjを使い、FaceColorプロパティを指定します。

Type                         文字列(参照のみ)

グラフィックスオブジェクトのクラス。 Patchオブジェクトでは、Typeは常に文字列 'patch'です。

UIContextMenu                uicontextmenu オブジェクトのハンドル

コンテキストメニューとPatchの対応付け。このプロパティは、Patchと同様に同じFigure内で作成したUicontextmenuオブジェクトのハンドル番号を割り当てます。コンテキストメニューを作成するためには、関数uicontextmenuを使用してください。MATLABは、Patch上で右マウスボタンをクリックしたときに、コンテキストメニューを表示します。

UserData                     行列

ユーザ指定のデータ。任意の行列をPatch オブジェクトに関連付けることができます。MATLAB はこのデータを使いませんが、setgetを使ってアクセスすることができます。

VertexNormals                行列

サーフェスの法線ベクトル。 このプロパティは、Patchに対する頂点の法線を含んでいます。MATLAB は、ライティングの計算を行うためこのデータを作成します。座標データと一致していなくても、ユーザ自身の頂点の法線データを提供することができます。これは興味のあるライティング効果の作成に有効です。

Vertices                     行列

頂点の座標。各頂点の x-, y-, z-座標を含む行列。詳細は Faces プロパティを参照してください。

Visible                      {on} | off

Patchオブジェクトの可視性。デフォルトでは、すべてのPatch が視覚可能です。offに設定すると、Patch は見えなくなりますが、それでも存在していて、プロパティを設定することができます。

XData                        ベクトル、または、行列

x 座標。Patch の頂点のx座標。XDataが行列ならば、各列が Patch の 1 つの面のx座標を表わします。この場合、XData, YData, ZDataは、同じ次元でなければなりません。

YData                        ベクトル、または、行列

y 座標Patch の頂点のy座標。YDataが行列ならば、各列が Patch 1 つの面の y 座標を表わします。この場合、 XData, YData, ZDataは、同じ次元でなければなりません。

ZData                        ベクトル、または、行列

z 座標Patch の頂点のz座標。ZDataが行列ならば、各列が Patch 1 つの面の z 座標を表わします。この場合、XData, YData,ZDataは、同じ次元でなければなりません。

参考

patch


  patch path