알고리즘
[기하] 점 3개의 방향성을 나타내는 CCW
parkit
2018. 10. 28. 11:36
728x90
반응형
※ 이 글의 모든 정보 및 그림은 https://www.acmicpc.net/blog/view/27
세 점 P1(x1, y1), P2(x2, y2), P3(x3, y3)가 있을 때,
점 3개를 이은 선분은 어떤 방향성을 나타내게 될까요? 11758번 문제: CCW
가능한 경우의 수는 총 3가지가 있습니다.
① 시계 방향(-1)
② 일직선(0)
③ 반시계 방향(1)
시계 방향을 -1, 일직선을 0, 반시계 방향을 1이라고 했을 때,
P1은 검정색, P2는 초록색, P3을 파란색으로 나타내면 아래 그림과 같습니다.
여기서 S의 부호에 따라서, 다음과 같이 세 가지로 나눌 수 있습니다.
S > 0 : 반시계 방향
S = 0 : 일직선
S < 0 : 시계 방향
코드
1 2 3 4 5 6 7 8 9 10 | int ccw(int x1, int y1, int x2, int y2, int x3, int y3) { int temp = x1*y2 + x2*y3 + x3*y1; temp = temp - y1*x2 - y2*x3 - y3*x1; if (temp > 0) return 1; // 반시계 else if (temp < 0) return -1; // 시계 else return 0; // 일직선 } | cs |
728x90
반응형