정의 , • 다각형 평면에서이 직선에 대한 모노톤라고 L 의 경우 직교 모든 라인, L의 교차의 P 최대 두 번.
다각형 주어 , 어떤 광고가 존재하는지 결정하는 것이 가능하다 L 같은 다각형 것을 P는 에 대하여 인 단조를 L ? 그렇다면 어떻게?
이전에, 나는 물었다 관련 질문 (I 다각형이 특정 라인에 대한 모노톤인지 확인하는 방법을 질문)하지만 때 지금은 경우에 관심이 되어 있지 주어진 또는 사전에 지정했습니다.
정의 , • 다각형 평면에서이 직선에 대한 모노톤라고 L 의 경우 직교 모든 라인, L의 교차의 P 최대 두 번.
다각형 주어 , 어떤 광고가 존재하는지 결정하는 것이 가능하다 L 같은 다각형 것을 P는 에 대하여 인 단조를 L ? 그렇다면 어떻게?
이전에, 나는 물었다 관련 질문 (I 다각형이 특정 라인에 대한 모노톤인지 확인하는 방법을 질문)하지만 때 지금은 경우에 관심이 되어 있지 주어진 또는 사전에 지정했습니다.
답변:
것이 가능하다.
다각형을 고려하고 "오목"정점을 고려하십시오. 어떤 선이 다각형과 두 번 이상 교차 할 것인지를 정확하게 정의합니다. 다음 그림에서 금지 각도의 간격 (빨간색)을 표시했습니다. 그것들을 모아서 빨간색 디스크에 구멍이 보이면 승인 된 각도 (파란색)가 있습니다. 그런 다음 다각형은 기울기 (녹색)의 선에 대해 단조롭습니다 .
이제 알고리즘입니다.
하자 될 다각형의 정점 번째. 먼저 모서리 의 절대 각도 와 꼭짓점 의 내부 각도 를 계산하십시오 . 모든 우수한 프로그래밍 언어로 제공 되는 기능을 사용하십시오 .atan2
정점이 반 시계 방향이 아닌 경우, 즉 가 음수가 아닌 경우 정점의 순서를 . ( : 시계 반대 방향, : 시계 방향).
다음은 보다 큰 내부 각도 , 에만 해당됩니다 . 내 사진의 빨간 것들. 목표는 모듈로 없는 각도 를 찾는 것입니다 . 즉, 모든 대해 :
여기서 는 에서 정규화 된 값입니다 . 두 번째 경우는 초과하는 간격에 해당합니다 (이번 는 "내부"여야 함).
이하지만 하나를 할 수있는 빠른 방법 아마이 값을 정렬 할 수 있습니다 로 및 테스트하는 .
를 찾으면 이 존재하고 기울기 입니다. 그렇지 않으면 는 단조롭지 않습니다.