Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

union

polyshape オブジェクトの結合

説明

polyout = union(poly1,poly2) は、領域が 2 つの polyshape オブジェクトの結合である polyshape オブジェクトを返します。この結合には、poly1poly2 の結合された領域が含まれますが、これらの配列は互換性のあるサイズでなければなりません。

polyout = union(polyvec) は、領域がベクトル polyvec のすべての polyshape の幾何学的な結合である polyshape オブジェクトを返します。この結合には、polyvecpolyshape オブジェクトの結合された領域が含まれます。

[polyout,shapeID,vertexID] = union(poly1,poly2) は、polyout の頂点から poly1poly2 の頂点への、頂点のマッピング情報も返します。関数 union がこの構文をサポートするのは、poly1poly2 がスカラー polyshape オブジェクトである場合のみです。

shapeID 要素は、polyout の対応する頂点が poly1 または poly2 に由来するか、あるいは結合により作成されたかを識別します。vertexIDpolyout の頂点を poly1poly2、または結合の頂点にマッピングします。

[polyout,shapeID,vertexID] = union(polyvec) は、polyvec から polyshape オブジェクト polyvec のベクトルの各要素への、頂点のマッピング情報を返します。

___ = union(___,'KeepCollinearPoints',TF) は、前述の任意の構文について、同一線上の点を polyout に保持するか削除するかを指定します。

すべて折りたたむ

2 つの多角形を作成してプロットします。

poly1 = polyshape([0 0 1 1],[1 0 0 1]);
poly2 = polyshape([0.75 1.25 1.25 0.75],[0.25 0.25 0.75 0.75]);
plot(poly1)
hold on
plot(poly2)

Figure contains an axes object. The axes object contains 2 objects of type polygon.

figure

poly1poly2 の結合を計算してプロットします。

polyout = union(poly1,poly2)
polyout = 
  polyshape with properties:

      Vertices: [8x2 double]
    NumRegions: 1
      NumHoles: 0

plot(polyout)
xlim([-0.2 1.4]);
ylim([-0.2 1.2]);

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

多角形のベクトルを作成し、各多角形をプロットします。

polyarray1 = polyshape([0 0 1 1],[1 0 0 1]);
polyarray2 = polyshape([0.75 1.25 1.25 0.75],[0.25 0.25 0.75 0.75]);
poly1 = [polyarray1 polyarray2]
poly1 = 
  1x2 polyshape array with properties:

    Vertices
    NumRegions
    NumHoles

plot(poly1(1))
hold on
plot(poly1(2))

Figure contains an axes object. The axes object contains 2 objects of type polygon.

figure

2 つの多角形の結合を計算してプロットします。

polyout = union(poly1)
polyout = 
  polyshape with properties:

      Vertices: [8x2 double]
    NumRegions: 1
      NumHoles: 0

plot(polyout)
xlim([-0.2 1.4]);
ylim([-0.2 1.2]);

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

2 つの多角形を作成し、その結合を計算してプロットします。結合の頂点座標と、対応する頂点のマッピング情報を表示します。

poly1 = polyshape([0 0 1 1],[1 0 0 1]);
poly2 = translate(poly1,[0.5 0]);
[polyout,shapeID,vertexID] = union(poly1,poly2);
plot(polyout)
axis equal

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

[polyout.Vertices shapeID vertexID]
ans = 4×4

         0    1.0000    1.0000    1.0000
    1.5000    1.0000    2.0000    2.0000
    1.5000         0    2.0000    3.0000
         0         0    1.0000    4.0000

結合の最初と最後の頂点は poly1 に由来します。これは、shapeID の対応する値が 1 であることからわかります。これらの頂点はそれぞれプロパティ poly1.Vertices の 1 番目と 4 番目の頂点です。これは、vertexID の対応する値が 1 および 4 であることからわかります。同様に、結合の 2 番目と 3 番目の頂点は poly2 に由来します。これらはそれぞれプロパティ poly2.Vertices の 2 番目および 3 番目の頂点です。

入力引数

すべて折りたたむ

1 番目の入力 polyshape。スカラー、ベクトル、行列または多次元配列として指定します。

2 番目の入力 polyshape。スカラー、ベクトル、行列または多次元配列として指定します。

polyshape ベクトル。

同一線上の頂点インジケーター。false または true として指定します。

  • false — 出力 polyshape が境界の定義に必要な最小数の頂点のみを含むように、同一線上の点を削除する。

  • true — 同一線上の点をすべて頂点として保持する。

'KeepCollinearPoints' パラメーターが指定されていない場合、入力 polyshape オブジェクトの作成時に使用した値に従って値が割り当てられます。

  • 各入力 polyshape の作成時に値が true だった場合、出力 polyshape の値は true に設定される。

  • 各入力 polyshape の作成時に値が false だった場合、出力 polyshape の値は false に設定される。

  • 入力 polyshape オブジェクトの値が一致しない場合、出力 polyshape の値は false に設定される。

データ型: logical

出力引数

すべて折りたたむ

出力 polyshape。スカラー、ベクトル、行列または多次元配列として返されます。

  • 2 つの polyshape 引数を入力する場合は、互換性のあるサイズでなければなりません。たとえば、2 つの入力 polyshape ベクトルの長さ M と N が異なる場合、方向はそれぞれ異なっていなければなりません (一方が行ベクトル、もう一方が列ベクトルでなければなりません)。polyout は、各入力ベクトルの方向に応じて、M 行 N 列または N 行 M 列となります。互換性のある配列サイズの詳細については、基本的な演算で互換性のある配列サイズを参照してください。

  • 1 つの入力引数 polyvec を指定した場合、polyout はスカラーの polyshape オブジェクトです。

形状 ID。結合の頂点の発生元を各要素が表す列ベクトルとして返されます。

  • shapeID の長さは、出力 polyshapeVertices プロパティの行数と等しくなります。

  • shapeID の要素は、入力引数の数によって異なります。

    • 2 つの入力引数 poly1 および poly2 を指定した場合、要素はスカラーの polyshape オブジェクトでなければなりません。shapeID の要素の値は、出力 polyshape の対応する頂点が結合により作成された場合には 0 となります。対応する頂点が poly1 に由来する場合は要素が 1 に、poly2 に由来する場合は 2 になります。

    • polyshape オブジェクトのベクトルである入力引数 polyvec を 1 つ指定した場合、shapeID には要素インデックス polyvec が含められ、対応する出力頂点の由来元となります。要素に対応する頂点が結合により作成された場合、その要素の値は 0 になります。

データ型: double

頂点 ID。列ベクトルとして返されます。このベクトルの要素は、出力 polyshape の頂点を元の polyshape の頂点にマッピングします。vertexID の要素には、入力 polyshapeVertices プロパティにおける対応する頂点の行番号が格納されます。出力 polyshape の対応する頂点が結合により作成されている場合、要素の値は 0 になります。

vertexID の長さは、出力 polyshapeVertices プロパティの行数と等しくなります。2 つの入力 polyshape オブジェクトを指定した場合、それらがスカラーである場合にのみ、union はこの出力引数をサポートします。

データ型: double

拡張機能

スレッドベースの環境
MATLAB® の backgroundPool を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool を使用してコードを高速化します。

バージョン履歴

R2017b で導入