inpolygon
다각형 영역의 내부 또는 모서리에 있는 점
설명
예제
볼록 다각형 내부에 있는 점
오각형, 그리고 점 집합을 정의합니다. 그런 다음 오각형의 내부 또는 모서리에 배치할 점을 지정합니다.
다각형 꼭짓점의 x 및 y 좌표를 정의하여 오각형을 생성합니다.
L = linspace(0,2*pi,6); xv = cos(L)'; yv = sin(L)';
250개 임의 쿼리 점의 x 및 y 좌표를 정의합니다. randn
의 출력값이 반복되도록 하기 위해 난수 생성기를 초기화합니다.
rng default
xq = randn(250,1);
yq = randn(250,1);
각 점이 다각형 영역의 내부 또는 모서리에 있는지 여부를 확인합니다. 또한 임의의 점이 다각형 영역의 모서리에 있는지 여부를 확인합니다.
[in,on] = inpolygon(xq,yq,xv,yv);
다각형 영역의 내부나 모서리에 있는 점 개수를 확인합니다.
numel(xq(in))
ans = 80
다각형 영역의 모서리에 있는 점 개수를 확인합니다.
numel(xq(on))
ans = 0
다각형 영역의 모서리에 있는 점이 없으므로, xq(in)
, yq(in)
으로 식별된 모든 80개의 점은 명확하게 다각형 영역의 내부에 있습니다.
다각형 영역의 내부나 모서리가 아니라 외부에 있는 점 개수를 확인합니다.
numel(xq(~in))
ans = 170
다각형과 쿼리 점을 플로팅합니다. 다각형 내부에 있는 점을 빨간색 플러스 기호로 표시합니다. 다각형 외부에 있는 점은 파란색 원으로 표시합니다.
figure plot(xv,yv) % polygon axis equal hold on plot(xq(in),yq(in),'r+') % points inside plot(xq(~in),yq(~in),'bo') % points outside hold off
다중연결 다각형 내부에 있는 점
정사각형 구멍이 있는 정사각형 내부의 점을 찾습니다.
정사각형 구멍이 있는 정사각형 영역을 정의합니다. 외부 루프의 꼭짓점을 시계 반대 방향으로 지정하고, 내부 루프의 꼭짓점은 시계 방향으로 지정합니다. NaN
을 사용하여 외부 루프와 내부 루프의 좌표를 구분합니다.
xv = [1 4 4 1 1 NaN 2 2 3 3 2]; yv = [1 1 4 4 1 NaN 2 3 3 2 2];
500개 임의 점의 x 및 y 좌표를 정의합니다. randn
의 출력값이 반복되도록 하기 위해 난수 생성기를 초기화합니다.
rng default
xq = rand(500,1)*5;
yq = rand(500,1)*5;
각 점이 다각형 영역의 내부 또는 모서리에 있는지 여부를 확인합니다.
in = inpolygon(xq,yq,xv,yv);
다각형과 쿼리 점을 플로팅합니다. 다각형 내부에 있는 점을 빨간색 플러스 기호로 표시합니다. 다각형 외부에 있는 점은 파란색 원으로 표시합니다.
figure plot(xv,yv,'LineWidth',2) % polygon axis equal hold on plot(xq(in),yq(in),'r+') % points inside plot(xq(~in),yq(~in),'bo') % points outside hold off
정사각형 구멍의 쿼리 점이 다각형의 외부에 있습니다.
자기교차 다각형의 내부에 있는 점
펜타그램의 x 및 y 좌표를 정의합니다.
xv = [0.5;0.2;1.0;0;0.8;0.5]; yv = [1.0;0.1;0.7;0.7;0.1;1];
12개 쿼리 점의 x 및 y 좌표를 정의합니다.
xq = [0.1;0.5;0.9;0.2;0.4;0.5;0.5;0.9;0.6;0.8;0.7;0.2]; yq = [0.4;0.6;0.9;0.7;0.3;0.8;0.2;0.4;0.4;0.6;0.2;0.6];
각 점이 다각형 영역의 내부 또는 모서리에 있는지 여부를 확인합니다. 또한 임의의 점이 다각형 영역의 모서리에 있는지 여부를 확인합니다.
[in,on] = inpolygon(xq,yq,xv,yv);
다각형 영역의 내부나 모서리에 있는 점 개수를 확인합니다.
numel(xq(in))
ans = 8
다각형 영역의 모서리에 있는 점 개수를 확인합니다.
numel(xq(on))
ans = 2
다각형 영역의 내부나 모서리가 아니라 외부에 있는 점 개수를 확인합니다.
numel(xq(~in))
ans = 4
다각형과 점을 플로팅합니다. 명확하게 다각형 내부에 있는 점을 빨간색 플러스 기호로 표시합니다. 모서리에 있는 점을 검은색 별표로 표시합니다. 다각형 외부에 있는 점은 파란색 원으로 표시합니다.
figure plot(xv,yv) % polygon hold on plot(xq(in&~on),yq(in&~on),'r+') % points strictly inside plot(xq(on),yq(on),'k*') % points on edge plot(xq(~in),yq(~in),'bo') % points outside hold off
6개의 점이 다각형 내부에 있습니다. 2개의 점은 다각형의 모서리에 있습니다. 4개의 점은 다각형 외부에 있습니다.
입력 인수
xq
— 쿼리 점의 x 좌표
스칼라 | 벡터 | 행렬 | 다차원 배열
쿼리 점의 x 좌표로, 스칼라, 벡터, 행렬, 다차원 배열 중 하나로 지정됩니다.
xq
의 크기는 yq
의 크기와 일치해야 합니다.
데이터형: double
| single
yq
— 쿼리 점의 y 좌표
스칼라 | 벡터 | 행렬 | 다차원 배열
쿼리 점의 y 좌표로, 스칼라, 벡터, 행렬, 다차원 배열 중 하나로 지정됩니다.
yq
의 크기는 xq
의 크기와 일치해야 합니다.
데이터형: double
| single
xv
— 다각형 꼭짓점의 x 좌표
벡터
다각형 꼭짓점의 x 좌표로, 벡터로 지정됩니다.
xv
의 크기는 yv
의 크기와 일치해야 합니다.
다중연결 다각형이나 서로소인 다각형의 꼭짓점을 지정하려면 NaN
을 사용하여 개별 루프에 대해 좌표를 구분하십시오. 다중연결 다각형의 경우 추가적으로, 외부 루프와 내부 루프에 대한 꼭짓점을 서로 반대 방향으로 지정해야 합니다.
다각형은 자기교차 및 루프 방향에 대한 모호성으로 인해 자기교차하거나 다중연결할 수 없습니다.
데이터형: double
| single
yv
— 다각형 꼭짓점의 y 좌표
벡터
다각형 꼭짓점의 y 좌표로, 벡터로 지정됩니다.
yv
의 크기는 xv
의 크기와 일치해야 합니다.
다중연결 다각형이나 서로소인 다각형의 꼭짓점을 지정하려면 NaN
을 사용하여 개별 루프에 대해 좌표를 구분하십시오. 다중연결 다각형의 경우 추가적으로, 외부 루프와 내부 루프에 대한 꼭짓점을 서로 반대 방향으로 지정해야 합니다.
다각형은 자기교차 및 루프 방향에 대한 모호성으로 인해 자기교차하거나 다중연결할 수 없습니다.
데이터형: double
| single
출력 인수
in
— 다각형 영역의 내부나 모서리에 있는 점에 대한 표시자
논리형 배열
다각형 영역의 내부나 모서리에 있는 점에 대한 표시자로, 논리형 배열로 반환됩니다. in
은 xq
및 yq
와 크기가 동일합니다.
논리값
1
(true
)은 대응하는 쿼리 점이 다각형 영역의 내부에 있거나 다각형 경계의 모서리에 있음을 나타냅니다.논리값
0
(false
)은 대응하는 쿼리 점이 다각형 영역의 외부에 있음을 나타냅니다.
따라서 in
을 사용하여 xq
와 yq
의 요소를 참조하여 관심 있는 쿼리 점을 식별할 수 있습니다.
xq(in) , yq(in) | 다각형 영역의 내부나 모서리에 있는 쿼리 점 |
xq(~in) , yq(~in) | 다각형 영역의 외부에 있는 쿼리 점 |
on
— 다각형 영역의 모서리에 있는 점에 대한 표시자
논리형 배열
다각형 영역의 모서리에 있는 점에 대한 표시자로, 논리형 배열로 반환됩니다. on
은 xq
및 yq
와 크기가 동일합니다.
논리값
1
(true
)은 대응하는 쿼리 점이 다각형 경계에 있음을 나타냅니다.논리값
0
(false
)은 대응하는 쿼리 점이 다각형 경계의 내부 또는 외부에 있음을 나타냅니다.
따라서 on
과 in
을 사용하여 xq
와 yq
의 요소를 참조하여 관심 있는 쿼리 점을 식별할 수 있습니다.
xq(on) , yq(on) | 다각형 경계에 있는 쿼리 점 |
xq(~on) , yq(~on) | 다각형 경계의 내부 또는 외부에 있는 쿼리 점 |
xq(in&~on) , yq(in&~on) | 명확하게 다각형 영역의 내부에 있는 쿼리 점 |
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
단정밀도 입력값과 배정밀도 입력값을 지원하지만, 모든 입력값이 단정밀도인 경우에도 배정밀도 산술 연산을 사용합니다.
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
GPU 배열
Parallel Computing Toolbox™를 사용해 GPU(그래픽스 처리 장치)에서 실행하여 코드 실행 속도를 높일 수 있습니다.
이 함수는 GPU 배열을 완전히 지원합니다. 자세한 내용은 GPU에서 MATLAB 함수 실행하기 (Parallel Computing Toolbox) 항목을 참조하십시오.
분산 배열
Parallel Computing Toolbox™를 사용하여 대규모 배열을 클러스터의 결합된 메모리에 걸쳐 분할할 수 있습니다.
이 함수는 분산 배열을 완전히 지원합니다. 자세한 내용은 분산 배열을 사용하여 MATLAB 함수 실행 (Parallel Computing Toolbox) 항목을 참조하십시오.
버전 내역
R2006a 이전에 개발됨
참고 항목
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
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:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)