Main Content

patch オブジェクトの紹介

patch オブジェクトとは

patch グラフィックス オブジェクトは、結合された 1 つ以上の多角形または結合されない 1 つ以上の多角形から構成されます。patch は航空機や自動車などの実世界のオブジェクトのモデル化や、任意の形状の 2 次元または 3 次元多角形の描画に役立ちます。

これとは対照的に surface オブジェクトは四辺形の四角形グリッドで、数学関数の値や四角形平面のデータの等高線、球面のようなパラメーター化した曲面などの平面的な地形を表示するのに適しています。

patch オブジェクトを作成する MATLAB® 関数には、fillfill3isosurfaceisocaps と数種類の関数 contourpatch があります。この節では、関数 patch の使用方法を中心に説明します。

パッチはその頂点の座標とカラー データの形式を指定することによって定義します。パッチは幾何学的形状に重ね合わせてデータを可視化するのに便利な、さまざまなカラーリングのオプションをサポートしています。

パッチの指定方法には次の 2 つがあります。

  • 各多角形の頂点の座標を指定して結合し、パッチを形成する。

  • "固有な" 各頂点の座標と、頂点を結合し面を形成する方法を決める行列を指定する。複数の面をもつパッチの場合、この方法が推奨されます。複数の面で共有される頂点は一度だけ定義すればよいことから、パッチを定義するために通常多くのデータを必要としないというのがその理由です。詳細については、複数の面をもつパッチを参照してください。

関数 patch の動作

関数 patch には、高水準な構文と低水準な構文の 2 つの形式があります。関数 patch の動作は使用する構文によって若干異なります。

高水準な構文

高水準な構文を使用する場合、MATLAB は指定したカラー データに基づいて各面をカラーリングする方法を自動的に決めます。高水準な構文は、xyz 軸座標に対するプロパティ名やカラー データを正式な順番で指定する限り、省略できます。

patch(x-coordinates,y-coordinates,z-coordinates,colordata)

ただし、MATLAB がどのタイプのカラーリングを使用するかを決められるように、カラー データを指定する必要はあります。カラー データを指定しないと、MATLAB は次のエラーを出力します。

x = [0 1 1 0];
y = [0 0 1 1];
patch(x,y)
Error using patch
Not enough input arguments.

低水準な構文

低水準な構文では、プロパティ名とプロパティ値の組み合わせのみを引数として設定できます。FaceColor プロパティの値も同時に変更しない限り、面は自動的にカラーリングされません。たとえば、次のステートメントを考えます。

patch('XData',x,'YData',y) 

FaceColor プロパティに対する工場出荷時の既定の設定が黒色なので、黒色の面の色を使用してパッチを描画します。

get(groot,'FactoryPatchFaceColor')
ans =
      0     0     0

プロパティの工場出荷時の既定の設定やユーザー既定値の取得方法に関しては、MATLAB 関数リファレンスの Patch のプロパティ のリストや get コマンドを参照してください。

色引数の解釈

高水準な構文を使用する場合、MATLAB は 3 番目 (z 座標がある場合は 4 番目) の引数をカラー データと解釈します。xyz 座標でパッチを定義し、色を取り除いた場合、MATLAB は z 座標をカラー データとして解釈し、2 次元のパッチを描画します。以下に例を示します。

patch(x,y,1:length(x))

は、(頂点ごとに 1 つの色をもつので) 頂点の色から内挿することによってカラーリングしたすべての頂点が z = 0 であるパッチを描画します。一方、

patch(x,y,1:length(x),'y')

z が増加する値に頂点をもつ黄色にカラーリングしたパッチを描画します。

パッチのカラーリング オプションに関する情報は、パッチ データをカラーマップに関係付ける方法を参照してください。

単一の多角形の作成

多角形は 1 つの面をもつシンプルなパッチです。多角形を作成するには、次の形式のステートメントで頂点の座標とカラー データを指定します。

patch(x-coordinates,y-coordinates,[z-coordinates],colordata)

たとえば、次のステートメントは黒のエッジで囲まれた黄色の面をもつ 10 角形を表示します。axis equal コマンドを使用して、縦横比が同じ多角形が作成できます。

t = 0:pi/5:2*pi;
figure
patch(sin(t),cos(t),'y')
axis equal

はじめと最後の頂点は一致する必要はありません。MATLAB は自動的にパッチの各多角形面を閉じます。実際、特に面のカラーリングを内挿している場合、各頂点を一度のみ定義する方が一般に適切な結果になります。

内挿したフェース カラー

パッチのカラーリングのさまざまな面をコントロールできます。たとえば単一色を指定する代わりに、各頂点での色を Figure のカラーマップの色に写像する数値範囲として与えることができます。

a = t(1:length(t)-1); %remove redundant vertex definition
figure
patch(sin(a),cos(a),1:length(a),'FaceColor','interp')
axis equal

MATLAB は、パッチの面上で色を内挿します。エッジの色を内挿するように設定すると、同様にしてパッチのエッジにカラーリングすることができます。コマンドは、以下になります。

patch(sin(a),cos(a),1:length(a),'EdgeColor','interp')

パッチのカラーリング オプションに関する情報は、パッチ データをカラーマップに関係付ける方法を参照してください。