원호의 시작, 중간 및 끝 (a
, m
및 b
)을 나타내는 원에 있다고 알고있는 3 점이 있습니다. 또한 시계 반대 방향으로 양의 X 축에서이 점의 각도를 가지고 -pi < theta < pi
을 가지므로 중심에서 점까지의 세 벡터 중 atan2(y,x)
을 사용합니다.세 점/각도 중에서 호의 시작과 끝을 확인하십시오.
나는 또한 포인트가 m
이고, 알고 싶은 것은 a
과 b
이 호의 시계 방향 끝인지 여부를 알고 있습니다.
: 처음 네는 "끝"과 "시작"으로 b
후자 네 가지로 a
이 다른 있습니다
"East" "West" "East"
0 -pi | pi 0
---------------+-------------
a m b |
a m | b
a | m b
| a m b
b m a |
b m | a
b | m a
| b m a
길 주변에. 약 0으로 둘러싼 주문은 오른쪽 또는 왼쪽에 표시 될 수 있으므로 기호는 도움이되지 않습니다.
운동이 시작이고 끝점은 깔끔한 방법이 있습니까? 큰, 고밀도의 if/else-if 블록에서 8 가지 옵션 각각의 상대 값을 힘들게 검사하는 것 외에는 그렇지 않습니다.
구현 언어는 Python이지만 언어 별 질문은 아닙니다.
똑똑하고 간단합니다. 구현을위한 간단한 참고 사항, 90도 왼쪽 회전 (시계 방향)은 (x, y)를 (-y, x)로 변환합니다. 원하는 경우 전체 회전 행렬을 수행 할 수 있지만 더 빠릅니다! – Inductiveload