Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

convhull

볼록 껍질(Convex Hull)

설명

예제

k = convhull(P)는 행렬 P에 있는 점의 2차원 또는 3차원 볼록 껍질을 계산합니다.

k = convhull(x,y)는 열 벡터 xy에 있는 점의 2차원 볼록 껍질을 계산합니다.

예제

k = convhull(x,y,z)는 열 벡터 x, y, z에 있는 점의 3차원 볼록 껍질을 계산합니다.

예제

k = convhull(___,'Simplify',tf)는 볼록 껍질의 면적이나 부피 계산에 영향을 미치지 않는 꼭짓점을 제거할지 여부를 지정합니다. 기본적으로 tffalse입니다.

예제

[k,av] = convhull(___)은 볼록 껍질의 면적 또는 부피도 계산합니다.

예제

모두 축소

2차원 점으로 구성된 행렬을 생성합니다. 볼록 껍질과 그 면적을 계산합니다.

P = [0 0; 1 1; 1.5 0.5; 1.5 -0.5; 1.25 0.3; 1 0; 1.25 -0.3; 1 -1];
[k,av] = convhull(P);

원래 점과 볼록 껍질을 플로팅합니다.

plot(P(:,1),P(:,2),'*')
hold on
plot(P(k,1),P(k,2))

Figure contains an axes. The axes contains 2 objects of type line.

면적을 표시합니다.

av
av = 1.7500

부피에 영향을 미치지 않는 점을 제거하여 3차원 볼록 껍질을 단순화합니다.

3차원 점 집합을 만듭니다. 볼록 껍질과 그 부피를 계산합니다. 볼록 껍질을 플로팅합니다.

[x,y,z] = meshgrid(-2:1:2,-2:1:2,-2:1:2);
x = x(:);
y = y(:);
z = z(:);

[k1,av1] = convhull(x,y,z);

trisurf(k1,x,y,z,'FaceColor','cyan')
axis equal

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

점은 거의 없지만 부피는 그대로 유지하는, 단순화된 볼록 껍질을 계산한 다음 플로팅합니다.

[k2,av2] = convhull(x,y,z,'Simplify',true);

trisurf(k2,x,y,z,'FaceColor','cyan')
axis equal

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

두 볼록 껍질의 부피를 표시합니다. 부피는 동일하지만, 단순화된 볼록 껍질의 점 개수가 더 적습니다.

av1
av1 = 64.0000
av2
av2 = 64

입력 인수

모두 축소

점으로, 열이 x 좌표, y 좌표, z 좌표(3차원의 경우)인 행렬로 지정됩니다.

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

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

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

단순화 표시자로, 숫자형 또는 논리값 0(false) 또는 1(true)로 지정됩니다.

출력 인수

모두 축소

인덱스로, 벡터나 행렬로 반환됩니다.

  • 2차원 점의 경우 k는 볼록 껍질을 구성하는 입력 점의 행 인덱스를 담은 열 벡터로, 시계 반대 방향으로 정렬됩니다.

  • 3차원 점의 경우 k는 볼록 껍질을 구성하는 삼각분할을 나타내는 3열 행렬입니다. 각 행은 삼각분할의 패싯을 나타냅니다. 값은 입력 점의 행 인덱스를 나타냅니다.

볼록 껍질의 면적 또는 부피로, 스칼라로 반환됩니다.

  • convhull 출력값을 2차원에 플로팅하려면 plot 함수를 사용하십시오. convhull 출력값을 3차원에 플로팅하려면 trisurf 또는 trimesh를 사용하십시오.

확장 기능

참고 항목

R2006a 이전에 개발됨