Main Content

boundary

2차원 또는 3차원 점 집합의 경계

설명

예제

k = boundary(x,y)는 점 (x,y) 주위를 하나로 감싸면서 2차원 경계를 나타내는 점의 인덱스로 구성된 벡터를 반환합니다. 점 (x(k),y(k))는 경계를 형성합니다. 볼록 껍질(Convex Hull)과 달리, 경계는 점을 감싸도록 껍질 내부 쪽으로 줄어들 수 있습니다.

예제

k = boundary(x,y,z)는 점 (x,y,z) 주위를 하나로 감싸면서 3차원 경계를 나타내는 삼각분할을 반환합니다. k의 각 행은 점 인덱스와 관련해 정의된 삼각형입니다.

예제

k = boundary(P)는 행렬 P의 열에 점 (x,y)(x,y,z)를 지정합니다.

예제

k = boundary(___,s)는 위에 열거된 구문 중 하나를 사용하여 축소 인자 s를 지정합니다. s01 사이의 스칼라입니다. s0으로 설정하면 볼록 껍질이 만들어지고, s1로 설정하면 점들을 감싸는 조밀한 경계가 만들어집니다. 디폴트 축소 인자는 0.5입니다.

예제

[k,v] = boundary(___)는 스칼라 v를 반환합니다. 이 값은 경계 k가 둘러싸는 면적(2차원)이나 부피(3차원)입니다.

예제

모두 축소

임의의 2차원 점 집합을 만들고 플로팅합니다.

rng('default')
x = rand(30,1);
y = rand(30,1);
plot(x,y,'.')
xlim([-0.2 1.2])
ylim([-0.2 1.2])

Figure contains an axes object. The axes contains a line object which displays its values using only markers.

디폴트 축소 인자를 사용하여 점 주위의 경계를 계산합니다.

k = boundary(x,y);
hold on;
plot(x(k),y(k));

Figure contains an axes object. The axes object contains 2 objects of type line. One or more of the lines displays its values using only markers

축소 인자 0.1을 사용하여 점 주위에 새 경계를 만듭니다. 그 결과 점을 둘러싸는 덜 조밀한 경계가 만들어집니다.

j = boundary(x,y,0.1);
hold on;
plot(x(j),y(j));

Figure contains an axes object. The axes object contains 3 objects of type line. One or more of the lines displays its values using only markers

임의의 3차원 점 집합을 만들고 플로팅합니다.

rng('default')
P = rand(30,3);
plot3(P(:,1),P(:,2),P(:,3),'.','MarkerSize',10)
grid on

Figure contains an axes object. The axes contains a line object which displays its values using only markers.

디폴트 축소 인자를 사용하여 경계를 플로팅합니다.

k = boundary(P);
hold on
trisurf(k,P(:,1),P(:,2),P(:,3),'Facecolor','red','FaceAlpha',0.1)

Figure contains an axes object. The axes object contains 2 objects of type line, patch. One or more of the lines displays its values using only markers

임의의 3차원 점 집합을 만들고 플로팅합니다.

rng default;
P = rand(30,3);
plot3(P(:,1),P(:,2),P(:,3),'.')
grid on

Figure contains an axes object. The axes contains a line object which displays its values using only markers.

두 개의 경계를 계산합니다. 이때 하나는 축소 인자 0을 사용하여 계산하고, 다른 하나는 축소 인자 1을 사용하여 계산합니다.

k = boundary(P,0);
j = boundary(P,1);

원래 점과 두 경계를 나란히 플로팅하여 축소 인자를 비교합니다.

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')

Figure contains 2 axes objects. Axes object 1 with title Shrink Factor = 0 contains 2 objects of type line, patch. One or more of the lines displays its values using only markers Axes object 2 with title Shrink Factor = 1 contains 2 objects of type line, patch. One or more of the lines displays its values using only markers

임의의 3차원 점 집합을 만들고 플로팅합니다.

rng('default')
P = rand(30,3);
plot3(P(:,1),P(:,2),P(:,3),'.')
grid on

Figure contains an axes object. The axes contains a line object which displays its values using only markers.

boundary 함수를 사용하여 점 주위의 경계를 계산하고 결과 형태의 부피를 구합니다.

[~, vol] = boundary(P);
vol
vol = 0.2962

입력 인수

모두 축소

점의 x 좌표로, 열 벡터로 지정됩니다.

데이터형: double

점의 y 좌표로, 열 벡터로 지정됩니다.

데이터형: double

점의 z 좌표로, 열 벡터로 지정됩니다.

데이터형: double

점 좌표로, 2개 열로 구성된 행렬(2차원 알파 셰이프의 경우)이나 3개 열로 구성된 행렬(3차원 알파 셰이프의 경우)로 지정됩니다.

  • 2차원의 경우 P의 열은 각각 x 좌표와 y 좌표를 나타냅니다.

  • 3차원의 경우 P의 열은 각각 x 좌표, y 좌표, z 좌표를 나타냅니다.

데이터형: double

축소 인자로, 범위 [0,1] 사이의 스칼라로 지정됩니다.

  • s = 0은 점에 대한 볼록 껍질(Convex Hull)을 나타냅니다.

  • s = 1은 점 둘레에 가장 꼭 맞는 단일 영역 경계를 나타냅니다.

디폴트 축소 인자는 0.5입니다. 축소 인자를 더 크게 지정하여 점 둘레의 경계를 줄이거나, 축소 인자를 더 작게 지정하여 점 둘레의 경계를 늘릴 수 있습니다.

예: k = boundary(x,y,0.76)은 축소 인자를 0.76으로 지정하여, 디폴트보다 더 꼭 맞는 경계를 만듭니다.

출력 인수

모두 축소

경계점 인덱스로, 벡터나 행렬로 반환됩니다. k에는 경계에 있는 입력 점의 인덱스가 포함됩니다.

  • 2차원 문제에서 k는 다각형 경계 주위의 점 시퀀스를 나타내는 점의 인덱스로 구성된 열 벡터입니다.

  • 3차원 문제에서 kmtri×3 크기의 삼각분할 행렬입니다. 여기서 mtri는 경계에 있는 삼각 패싯의 개수입니다. k의 각 행은 한 삼각형을 이루는 점 인덱스이며, 이러한 삼각형들이 모여 경계 다면체를 형성합니다.

경계로 둘러싸인 면적 또는 부피로, 스칼라로 반환됩니다.

  • 2차원 문제에서 v는 경계 k로 둘러싸인 면적입니다.

  • 3차원 문제에서 v는 경계 k로 둘러싸인 부피입니다.

알고리즘

boundary는 지정된 점으로부터 alphaShape를 생성하고 boundaryFacets를 사용하여 어느 점이 경계 위에 있는지 확인합니다.

확장 기능

버전 내역

R2014b에 개발됨