승형님의 블로그
[CCW 알고리즘] 세 점으로 이루어진 선분의 방향성 본문
2차원 좌표평면에 세 점 $p_1, p_2, p_3$가 주어질 때, 다음 식을 통해 $p_1 \to p_2 \to p_3$로 형성되는 선분의 방향성을 알 수 있다.
벡터의 외적 $S = (x_1y_2 + x_2y_3 + x_3y_1) - (x_2y_1 + x_3y_2 + x_1y_3)$
$if $ $ S < 0$, 시계방향
$if $ $ S = 0$, 일직선
$if $ $ S > 0$, 반시계방향
int CCW(pair<int,int> A, pair<int, int> B, pair<int, int> C) {
int a = A.first * B.second + B.first * C.second + C.first * A.second;
int b = B.first * A.second + C.first * B.second + A.first * C.second;
if (a > b) return 1;
else if (a == b) return 0;
else return -1;
}
'Algorithms' 카테고리의 다른 글
선분 교차 판정 알고리즘 (0) | 2023.01.01 |
---|---|
Euler's phi function / N이하의 서로소의 개수 구하기 (0) | 2022.12.27 |
정수의 소인수분해 알고리즘 (0) | 2022.12.04 |
다익스트라(Dijkstra) 알고리즘과 최단경로 역추적 (1) | 2022.11.24 |
[Sorting] Merge Sort(병합 정렬) (0) | 2022.09.28 |
Comments