반응형
각 점에 대해 x 정수와 y 정수로 표시되는 2 개의 점 (a 및 b라고 함)이있는 2 차원 평면이 있다고 가정 해 보겠습니다.
다른 점 c가 a와 b로 정의 된 선분에 있는지 어떻게 확인할 수 있습니까?
나는 파이썬을 가장 많이 사용하지만 어떤 언어로 된 예제가 도움이 될 것입니다.
해결 방법
Darius Bacon이 말한 것처럼 (b-a)와 (c-a)의 교차 곱 이 0인지 확인하면 점 a, b, c가 정렬되어 있는지 알려줍니다.
하지만 c가 a와 b 사이인지 알고 싶기 때문에 (ba)와 (ca)의 내적 이 양수 인지 확인해야합니다. a와 b 사이 거리의 제곱보다 작습니다 .
최적화되지 않은 의사 코드에서 :
def isBetween(a, b, c):
crossproduct = (c.y - a.y) * (b.x - a.x) - (c.x - a.x) * (b.y - a.y)
# compare versus epsilon for floating point values, or != 0 if using integers
if abs(crossproduct) > epsilon:
return False
dotproduct = (c.x - a.x) * (b.x - a.x) + (c.y - a.y)*(b.y - a.y)
if dotproduct < 0:
return False
squaredlengthba = (b.x - a.x)*(b.x - a.x) + (b.y - a.y)*(b.y - a.y)
if dotproduct > squaredlengthba:
return False
return True
참조 페이지 https://stackoverflow.com/questions/328107
반응형
'파이썬' 카테고리의 다른 글
파이썬 Windows 백그라운드 프로세스로 Python 스크립트 실행 (1) | 2020.11.17 |
---|---|
파이썬 Python 3.5에서 async / await를 사용하는 방법은 무엇입니까? (0) | 2020.11.17 |
파이썬 Python 2.7과 3.5를 모두 설치해도됩니까? (0) | 2020.11.17 |
파이썬 플라스크에서 전역 변수는 스레드로부터 안전합니까? 요청간에 데이터를 공유하려면 어떻게합니까? (0) | 2020.11.17 |
파이썬에서 두 사전의 차이를 얻는 방법은 무엇입니까? (0) | 2020.11.17 |
댓글