CCW(Counter Clock Wise)

3개의 점이 있을 때 점 3개를 이은 직선의 방향을 알고자 할 때 유용한 기하 알고리즘
경우의 수는 총 3가지이며 시계(음수), 직선(0), 반시계(양수)이 있으며 이는 외적을 통하여 구할 수 있다.

외적


외적은 3차원 공간상의 벡터에 대한 연산 중 하나이다.
위 그림은 외적을 행렬을 통해서 구한 것이다.
외적은 몇 가지 특징이 있다.
1. 두 벡터를 외적하면 두 벡터의 수직 벡터가 나온다.
2. 외적은 교환 법칙이 성립하지 않는다. 즉, a x b와 b x a는 다르다.
3. 두 벡터의 외적은 두 벡터가 만들어내는 평행사면형의 넓이이다.

과정


CCW의 과정은 위 그림과 같다.
점 A, B, C가 있을 때 벡터 AB, 벡터 BC를 구하고 외적을 진행한다.
외적은 3차원 공간에서의 연산이므로 z좌표를 0으로 두고 외적은 연산한다.
z좌표가 0이기 때문에 최종적으로 x, y좌표는 0이고 z좌표가 CCW의 반환값이 된다.

코드