Main Content

inShape

点がアルファ形状の内側にあるかどうかを判定

説明

tf = inShape(shp,qx,qy) は、2 次元のクエリ点 (qx,qy) が 2 次元アルファ形状 shp の内側にある場合、logical 1 (true) を返します。それ以外の場合、inShape は logical 0 (false) を返します。qx 引数と qy 引数は数値配列で、それぞれ対応する要素でクエリ点の (x,y) 座標を指定します。

tf = inShape(shp,qx,qy,qz) は、3 次元のクエリ点 (qx,qy,qz) が 3 次元アルファ形状 shp の内側にあるかどうかをテストします。

tf = inShape(shp,QP) は、2 列または 3 列の行列で 2 次元または 3 次元のクエリ点を指定します。

tf = inShape(___,RegionID) は、前述のいずれかの構文を使用して、クエリ点がアルファ形状の特定の領域内にあるかどうかをテストします。RegionID は領域の ID で、1RegionIDnumRegions(shp) です。

[tf,ID] = inShape(___) は、クエリ点を含むアルファ形状の領域の ID も返します。クエリ点がアルファ形状内にない場合、IDNaN になります。

すべて折りたたむ

2 次元の点の集合を作成します。

th = (pi/12:pi/12:2*pi)';
x1 = [reshape(cos(th)*(1:5), numel(cos(th)*(1:5)),1); 0];
y1 = [reshape(sin(th)*(1:5), numel(sin(th)*(1:5)),1); 0];
x = [x1; x1+15;];
y = [y1; y1];

アルファ半径を 2.5 にしてアルファ形状を作成し、プロットします。

shp = alphaShape(x,y,2.5);
plot(shp)

Figure contains an axes object. The axes object contains an object of type patch.

アルファ形状の近傍にあるクエリ点のデカルト格子を作成します。

[qx, qy] = meshgrid(-10:2:25, -10:2:10);

クエリ点がアルファ形状の内側にあるかどうかを確認し、内側にある点を赤でプロットします。アルファ形状の外側にあるクエリ点は青でプロットします。

in = inShape(shp,qx,qy);
plot(shp)
hold on
plot(qx(in),qy(in),'r.')
plot(qx(~in),qy(~in),'b.')

Figure contains an axes object. The axes object contains 3 objects of type patch, line.

入力引数

すべて折りたたむ

アルファ形状。alphaShape オブジェクトとして指定します。詳細については、alphaShape を参照してください。

例: shp = alphaShape(x,y) は、座標 (x,y) の点から 2 次元の alphaShape オブジェクトを作成します。

クエリ点の x 座標。数値配列として指定します。

データ型: double

クエリ点の y 座標。数値配列として指定します。

データ型: double

クエリ点の z 座標。数値配列として指定します。

データ型: double

クエリ点の座標。2 列の行列 (2 次元) または 3 列の行列 (3 次元) として指定します。

  • 2 次元の場合、QP の各列は x 座標と y 座標を表します。

  • 3 次元の場合、QP の各列は x 座標、y 座標、z 座標を表します。

データ型: double

アルファ形状の領域の ID 番号。1numRegions(shp) の範囲の正の整数スカラーとして指定します。

アルファ形状には、点集合やパラメーターに基づく複数の小さい領域を含めることができます。それらの小さい領域には、面積または体積が大きい順に一意の RegionID が割り当てられます。たとえば、2 つの領域をもつ 3 次元のアルファ形状を考えます。体積が大きい領域の RegionID は 1、体積が小さい領域の RegionID は 2 になります。

例: shp.RegionThreshold = area(shp,numRegions(shp)-2); は、2 次元アルファ形状 shp の領域を小さい方から 2 つ抑制します。

データ型: double

出力引数

すべて折りたたむ

クエリ点の状態。logical 配列として返されます。tf のサイズは、クエリ点を指定する入力 (qxqyqzQP) と同じになります。

inShape は、点がアルファ形状の内側または境界上にある場合、logical 1 (true) を返します。

クエリ点を含む領域の ID。数値配列として返されます。ID のサイズは tf と同じです。

バージョン履歴

R2014b で導入