평면상의 다각형에 점이 있는지 여부를 결정합니다.
여기서, 다음과 같이 (7,8)의 오렌지 점과 (12,10)의 녹색 점이있을 때 직사각형에 있는지 여부를 결정하는 방법을 소개한다.
Shapely
라는 라이브러리를 이용한다.이것은 GEOS를 기반으로 한 파이썬 라이브러리로, 평면상의 기하학적 도형의 분석과 조작에 사용된다.
참고 : htps : // py 피. 오 rg/p 로지ぇct/샤페 ly/
$ pip install shapely
사각형 안에 점이 있는지 여부
이하의 코드로 확인할 수 있다.
from shapely.geometry import Point
from shapely.geometry.polygon import Polygon
point = Point(7,8)
polygon = Polygon([(5,5), (10,5), (10,10), (5,10)])
print(polygon.contains(point)) # True
point = Point(12,10)
polygon = Polygon([(5,5), (10,5), (10,10), (5,10)])
print(polygon.contains(point)) # False
경계상의 점은 직사각형 내의 점이 아니라고 판정된다.
point = Point(5, 5)
polygon = Polygon([(5,5), (10,5), (10,10),(5,10)])
print(polygon.contains(point)) # False
5점 이상인 경우
아래 그림과 같이 5점 있다면 어떻게 할까? ( (7.5, 12.5) 추가.)
point = Point(7.5, 7.5)
polygon = Polygon([(5,5), (10,5), (10,10),(5,10), (7.5,12.5)]) # ここに追加するだけ。
print(polygon.contains(point)) # True
대상의 도형을 볼록포로서 판정하고 싶은 경우는, 이하에서 확인 가능하다.
from shapely.geometry import Point
from shapely.geometry.polygon import Polygon
from shapely.geometry import MultiPoint
point = Point(7.5, 7.5)
polygon = MultiPoint([(5,5), (10,5), (10,10),(5,10), (7.5,12.5)]).convex_hull
print(polygon.contains(point)) # True
이 경우에도 경계상의 점은 False로 판정된다.
Reference
이 문제에 관하여(평면상의 다각형에 점이 있는지 여부를 결정합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/gp333/items/841d76b2de027c57a0b3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)