CCW (Counter Clock Wise)
구현
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;
}
}
정리
- (x1, y1) - (x2, y2) - (x3, y3) 가 시계방향인지, 반시계방향인지, 직선인지 구분하는 방법
- ret = (x1*y2 + x2*y3 + x3*y1) - (x2*y1 + x3*y2 + x1*y3) 를 구한다
- ret > 0 : 반시계
- ret == 0 : 직선
- ret < 0 : 시계
- (Bx-Ax)(Cy-Ay) - (By-Ay)(Cx-Ax) 와 같은
관련 문제
- 11758번 문제: CCW