Main Content

polybuffer

点、ライン、または polyshape オブジェクトの周囲にバッファーを作成

説明

polyout = polybuffer(P,'points',d) は、P の 2 次元の点を距離 d 分だけバッファーする境界をもつ polyshape オブジェクトを返します。関数 polybuffer は、P の各点を中心とする半径 d の円の結合によってバッファーを計算します。行列 P の 1 列目にはバッファー対象とする点の x 座標が含まれ、2 列目にはそれに対応する y 座標が含まれます。

polyshape オブジェクト polyout を作成すると、プロパティを解析したり、polyshape 関数を使用して追加の計算を行ったりできます。たとえば、polyout.Vertices プロパティによってバッファー形状を定義する頂点にアクセスでき、また、コマンド plot(polyout) を使用して形状をプロットできます。

polyout = polybuffer(P,'lines',d) は、P の 2 次元の点により定義される線分をバッファーする境界をもつ polyshape オブジェクトを返します。関数 polybuffer は、入力点によって作成された線分に沿って、半径 d の円を線分に中心を置きつつ動かすことによってバッファーを計算します。

polyout = polybuffer(P,'lines',d,'JointType',jt) は、線分の端点の結合点 (ジョイント) をどのように処理するかを指定します。たとえば、polybuffer(P,'lines',d,'JointType','square') はジョイントの角を面取りします。

polyout = polybuffer(P,'lines',d,'JointType','miter','MiterLimit',lim) は、ジョイントのタイプが 'miter' に指定されている場合にマイター リミットを指定します。マイター リミットは、ジョイント頂点の移動距離とバッファー距離 d との最大許容比率です。リミット lim は 2 以上でなければなりません。

polyout = polybuffer(polyin,d) は、入力 polyshape のオブジェクト polyin を距離 d 分だけバッファーする境界をもつ polyshape オブジェクトを返します。d が正の値の場合、polyin の固体領域の境界は d 単位だけ拡大し、穴の境界は d 単位だけ縮小します。d が負の場合、固体の境界は縮小し、穴の境界は拡大します。

polyout = polybuffer(polyin,d,'JointType',jt) は、最初の入力引数が polyshape である場合に、polyshape のジョイントをどのように処理するかを指定します。

polyout = polybuffer(polyin,d,'JointType','miter','MiterLimit',lim) は、ジョイントのタイプが 'miter' に指定されていて、最初の入力引数が polyshape である場合にマイター リミットを指定します。

すべて折りたたむ

3 つの点の 2 次元座標が含まれる行列を作成します。その後、各点を 0.25 単位の距離だけバッファーする polyshape オブジェクトを作成します。

P = [0 0; 1 1; 2 1];
polyout = polybuffer(P,'points',0.25)
polyout = 
  polyshape with properties:

      Vertices: [542x2 double]
    NumRegions: 3
      NumHoles: 0

元の点とそれらのバッファー領域をプロットします。

plot(P(:,1),P(:,2),'r.','MarkerSize',10)
hold on
plot(polyout)
axis equal

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

線分を囲むバッファー領域を作成します。

2 次元の点の行列を作成し、点を連結する線分をバッファーする polyshape オブジェクトを計算します。

P = [0 0; 1 1; 2 1];
polyout1 = polybuffer(P,'lines',0.25);
plot(P(:,1),P(:,2),'r.','MarkerSize',10)
hold on
plot(polyout1)
axis equal
hold off

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

既定では、polybuffer は線分を連結するジョイントの角を丸めます。ジョイントの形状は、名前と値のペア 'JointType' を使用して制御できます。たとえば、値 'miter' を使用すると、2 つの線分を連結する角度が保持されます。

figure
polyout2 = polybuffer(P,'lines',0.25,'JointType','miter');
plot(P(:,1),P(:,2),'r.','MarkerSize',10)
hold on
plot(polyout2)
axis equal

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

固体の境界と穴の境界をもつ多角形を作成します。その後、境界から 0.1 の距離でバッファーを作成します。既定では、バッファーは丸いジョイントをもちます。

polyin = polyshape({[0 0 1 3],[0.5 1.5 1.5 0.5]},{[0 3 3 0],[0.5 0.5 1.5 1.5]});
plot(polyin)
polyout1 = polybuffer(polyin,0.1);
hold on
plot(polyout1)
hold off

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

2 のマイター リミットを使用してバッファーを作成します。マイター リミットはジョイントの尖り方を制御します。

polyout2 = polybuffer(polyin,0.1,'JointType','miter','MiterLimit',2);
plot(polyin)
hold on
plot(polyout2)

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

入力引数

すべて折りたたむ

2 次元の点の入力頂点。2 列の数値行列として指定します。P の 1 列目には x 座標が含まれ、2 列目には対応する y 座標が含まれます。

入力 polyshape。スカラー、ベクトル、行列または多次元配列として指定します。polyinpolyshape オブジェクトの配列である場合、polybuffer は指定したバッファー パラメーターを各要素に適用します。

バッファーの距離。数値スカラーとして指定します。

最初の入力引数が一連の頂点である場合、d は正の数値スカラーでなければなりません。

最初の入力引数が polyshape である場合、d には正の値、負の値、あるいはゼロを指定できます。

  • d>0 の場合、固体の境界は距離 d だけ拡大し、穴の境界は縮小します。

  • d<0 の場合、固体の境界は距離 d だけ縮小し、穴の境界は拡大します。

  • d=0 の場合、入力境界に変化はありません。

バッファー境界のジョイントのタイプ。次のいずれかとして指定します。

  • 'round' — 境界の角は丸くなります。

  • 'square' — 境界の角を面取りします。

  • 'miter' — ジョイント頂点の移動距離とバッファー距離との比率を 3 に制限します。この制限により、尖り過ぎが抑えられます。

最初の入力引数が一連の頂点である場合、polybuffer でジョイントのタイプが適用されるのは、2 つの線分の端点が結合する箇所のみで、線分のオープンな端点には適用されません。

最初の入力引数が polyshape である場合、polybuffer がジョイント タイプを固体の境界に適用するのはバッファー距離が正の場合で、穴の境界に適用するのはバッファー距離が負の場合です。

マイター リミット。2 以上の正の数値スカラーとして指定します。マイター リミットは、ジョイント頂点の移動距離とバッファー距離との比率です。マイター リミットを設定することにより、境界のジョイントの尖り方を制御できます。

バージョン履歴

R2017b で導入