Main Content

inShape

점이 알파 셰이프 내부에 있는지 확인

설명

예제

tf = inShape(shp,qx,qy)는 2차원 쿼리 점 (qx,qy)에 대해 2차원 알파 셰이프 shp 내부에 있으면 논리값 1(true)을 반환합니다. 그렇지 않으면 inShape는 논리값 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.

알파 셰이프 근처에 쿼리 점의 카테시안 그리드(Cartesian Grid)를 만듭니다.

[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. One or more of the lines displays its values using only markers

입력 인수

모두 축소

알파 셰이프로, 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가 할당됩니다. 이 ID는 가장 큰 면적이나 부피부터 가장 작은 면적이나 부피의 순으로 영역에 번호가 매겨진 것입니다. 예를 들어, 두 개의 영역을 포함하는 3차원 알파 셰이프를 가정하겠습니다. 둘 중 부피가 더 큰 영역의 RegionID는 1이고, 부피가 더 작은 영역의 RegionID는 2입니다.

예: shp.RegionThreshold = area(shp,numRegions(shp)-2);는 2차원 알파 셰이프 shp에서 가장 작은 두 개의 영역을 표시하지 않습니다.

데이터형: double

출력 인수

모두 축소

쿼리 점의 상태로, 논리형 배열로 반환됩니다. tf의 크기는 쿼리 점을 지정하는 입력값(qx, qy, qz, QP)의 크기와 같습니다.

inShape는 알파 셰이프 내부에 있거나 정확히 경계에 있는 점에 대해 논리값 1(true)을 반환합니다.

쿼리 점이 포함된 영역의 ID로, 숫자형 배열로 반환됩니다. ID의 크기는 tf와 같습니다.

버전 내역

R2014b에 개발됨

참고 항목

|