기술 블로그

[기하] 점 3개의 방향성을 나타내는 CCW 본문

알고리즘

[기하] 점 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 > 0return 1// 반시계
    else if (temp < 0return -1// 시계
    else return 0;    // 일직선
}
cs





728x90
반응형

'알고리즘' 카테고리의 다른 글

[파이썬] 다항식 곱셈 계산  (0) 2018.11.07
BFS와 DFS  (0) 2018.11.01
[유클리드 알고리즘] 최대공약수와 최소공배수  (0) 2018.10.14
효율적인 약수의 개수를 찾는 알고리즘  (0) 2018.10.14
이분 매칭  (0) 2018.09.29