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

참고 자료

results matching ""

    No results matching ""