ヘルプ センターヘルプ センター
2 次元または 3 次元の点集合の境界
k = boundary(x,y)
k = boundary(x,y,z)
k = boundary(P)
k = boundary(___,s)
[k,v] = boundary(___)
例
k = boundary(x,y) は、点集合 (x,y) を単一の領域で囲む 2 次元の境界を表す点のインデックスのベクトルを返します。これらの点 (x(k),y(k)) をつないで境界が形成されます。凸包とは異なり、境界は一連の点を囲む内側の方向に向かって縮小することができます。
k
x
y
(x,y)
(x(k),y(k))
k = boundary(x,y,z) は、点集合 (x,y,z) を単一の領域で囲む 3 次元の境界を表す三角形分割を返します。k の各行は点インデックスとして定義されている三角形です。
z
(x,y,z)
k = boundary(P) は、行列 P の列の点 (x,y) または (x,y,z) を指定します。
P
k = boundary(___,s) は、前述のいずれかの構文を使用して縮小係数 s を指定します。s は 0 から 1 までのスカラーです。s を 0 に設定すると凸包になり、s を 1 に設定すると点集合を囲むコンパクトな境界が得られます。既定の縮小係数は 0.5 です。
s
0
1
0.5
[k,v] = boundary(___) は、境界 k の内部の面積 (2 次元) または体積 (3 次元) を表すスカラー v も返します。
v
すべて折りたたむ
2 次元の乱数点の集合を作成してプロットします。
rng('default') x = rand(30,1); y = rand(30,1); plot(x,y,'.') xlim([-0.2 1.2]) ylim([-0.2 1.2])
既定の縮小係数を使用して点集合の境界を計算します。
k = boundary(x,y); hold on; plot(x(k),y(k));
縮小係数を 0.1 にして点集合の新しい境界を作成します。点集合の境界が前の例よりもコンパクトでなくなります。
j = boundary(x,y,0.1); hold on; plot(x(j),y(j));
3 次元の乱数点の集合を作成してプロットします。
rng('default') P = rand(30,3); plot3(P(:,1),P(:,2),P(:,3),'.','MarkerSize',10) grid on
既定の縮小係数を使用して境界をプロットします。
k = boundary(P); hold on trisurf(k,P(:,1),P(:,2),P(:,3),'Facecolor','red','FaceAlpha',0.1)
rng default; P = rand(30,3); plot3(P(:,1),P(:,2),P(:,3),'.') grid on
縮小係数 0 と縮小係数 1 の 2 つの境界を計算します。
k = boundary(P,0); j = boundary(P,1);
縮小係数が異なる 2 つの境界を元の点も含めて並べてプロットし、結果を比較します。
subplot(1,2,1); plot3(P(:,1),P(:,2),P(:,3),'.','MarkerSize',10) hold on trisurf(k,P(:,1),P(:,2),P(:,3),'FaceColor','red','FaceAlpha',0.1) axis equal title('Shrink Factor = 0') subplot(1,2,2); plot3(P(:,1),P(:,2),P(:,3),'.','MarkerSize',10) hold on trisurf(j,P(:,1),P(:,2),P(:,3),'FaceColor','red','FaceAlpha',0.1) axis equal title('Shrink Factor = 1')
rng('default') P = rand(30,3); plot3(P(:,1),P(:,2),P(:,3),'.') grid on
関数 boundary を使用して点集合の境界を計算し、生成された形状の体積を求めます。
boundary
[~, vol] = boundary(P); vol
vol = 0.2962
点の x 座標。列ベクトルとして指定します。
データ型: double
double
点の y 座標。列ベクトルとして指定します。
点の z 座標。列ベクトルとして指定します。
点の座標。2 列の行列 (2 次元アルファ形状の場合) または 3 列の行列 (3 次元アルファ形状の場合) として指定します。
2 次元の場合、P の各列は x 座標と y 座標を表します。
3 次元の場合、P の各列は x 座標、y 座標、z 座標を表します。
[0,1]
縮小係数。[0,1] の範囲のスカラーとして指定します。
s = 0 は、点集合の凸包に対応します。
s = 0
s = 1 は、点集合を単一の領域で囲む最も狭い境界に対応します。
s = 1
既定の縮小係数は 0.5 です。縮小係数を大きくしたり小さくしたりすると、点集合の境界がそれに応じて拡大または縮小されます。
例: k = boundary(x,y,0.76) は縮小係数を 0.76 に指定します。既定よりも狭い境界が生成されます。
k = boundary(x,y,0.76)
0.76
境界の点のインデックス。ベクトルまたは行列として返されます。k には、入力で指定した点のうち、境界上にある点のインデックスが格納されます。
2 次元の場合、k は、多角形の境界上にある一連の点を表すインデックスの列ベクトルになります。
3 次元の場合、k は、mtri 行 3 列の三角形分割の行列になります。mtri は境界上にある三角面の数です。k の各行の点のインデックスで三角形が定義され、それらの三角形をつないで境界の多面体が形成されます。
mtri
3
境界の内部の面積または体積。スカラーとして返されます。
2 次元の場合、v は境界 k の内部の面積になります。
3 次元の場合、v は境界 k の内部の体積になります。
boundary は指定した点から alphaShape を構成し、boundaryFacets を使用してどの点が境界上にあるか決定します。
alphaShape
boundaryFacets
backgroundPool
ThreadPool
この関数はスレッドベースの環境を完全にサポートしています。詳細については、Run MATLAB Functions in Thread-Based Environmentを参照してください。
alphaShape | triangulation | delaunayTriangulation | trisurf | convhull
triangulation
delaunayTriangulation
trisurf
convhull
この例の変更されたバージョンがあります。編集された方の例を開きますか?
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Contact your local office