ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

Patch オブジェクトの紹介

Patch オブジェクトとは

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

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

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

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

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

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

  • "固有な" 頂点座標と面を作成するために、それを結合する方法を決める行列を指定する

複数の面をもつパッチの場合、一般にパッチを定義するために多くのデータを必要としないことから 2 番目の方法が推奨されます。これは複数の面で共有される頂点は一度だけ定義すればよいからです。この節では両方の方法についての例を示します。

関数 patch の動作

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

高水準な構文

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

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

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

patch(sin(t),cos(t))
??? Error using ==> patch
Not enough input arguments.

低水準な構文

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

patch('XData',sin(t),'YData',cos(t)) % Low-level syntax

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

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

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

色引数の解釈

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

h = patch(sin(t),cos(t),1:length(t))

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

h = patch(sin(t),cos(t),1:length(t),'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(t),cos(t),1:length(t),'EdgeColor','interp')

インデックス付きカラーとトゥルーカラーによる内挿」では、パッチがどのように面上の色を内挿するかについての情報が提供されています。

パッチのカラーリング オプションに関する情報は、「パッチのカラーリングの指定」を参照してください。

この情報は役に立ちましたか?