점이 다각형 내에 있는지 확인하는 것은 계산 기하학에서 자주 수행되는 작업입니다. 이 작업에 대한 효율적인 방법을 찾는 것은 많은 수의 포인트를 평가할 때 유리합니다. 여기서는 일반적으로 사용되는 두 가지 방법인 Ray Tracing과 Matplotlib의 path.contains_points 함수를 탐색하고 비교합니다.
Ray Tracing 방법
Ray Tracing 방법은 Matplotlib의 path.contains_points 함수와 교차합니다. 다각형의 측면으로 조사 중인 점. 교차점 수를 세고 패리티를 기준으로 점이 다각형 내부에 있는지 확인합니다.
Matplotlib의 path.contains_points 함수
Matplotlib의 path.contains_points 함수는 다각형을 나타내는 경로 객체입니다. 주어진 지점이 정의된 경로 내에 있는지 확인합니다. 이 기능은 제공된 코드 조각에서 볼 수 있듯이 광선 추적 접근 방식보다 빠른 경우가 많습니다.
from time import time
import matplotlib.path as mpltPath다각형 및 무작위 점
다각형 = [[np.sin(x) 0.5, np.cos(x) 0.5] for x in np.linspace(0, 2*np.pi, 100)]
points = np.random.rand(10000, 2)레이 트레이싱 경과 시간
start_time = time()
inside1 = [ray_tracing_method(point[0], point[ 1], 폴리곤) for point]
print("Ray Tracing Elapsed time: " str(time() - start_time))Matplotlib contain_points elapsed time
start_time = time ()
path = mpltPath.Path(polygon)
inside2 = path.contains_points(points)
print("Matplotlib contain_points 경과 시간: " str(time() - start_time))
< /pre>위 코드는 Ray Tracing에 비해 Matplotlib 접근 방식의 실행 시간이 훨씬 더 빠르다고 보고합니다.
기타 옵션
이러한 방법 외에도 , 기하학적 작업을 위해 특별히 설계된 Shapely 패키지는 다각형 점 검사를 위한 효율적인 기능을 제공합니다.
위 내용은 Point-in-Polygon 감지에 Ray Tracing 또는 Matplotlib의 path.contains_points 중 어떤 방법이 더 효율적입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!