티스토리 뷰
11758 CCW : https://www.acmicpc.net/problem/117586
2166 다각형의 면적 : https://www.acmicpc.net/problem/2166
CCW
- 벡터의 외적을 이용하여 평면상에 세 점이 있을 때, 점들의 위치관계를 판단할 수 있는 알고리즘
- 회전방향이 반시계일 경우 (+), 시계인 경우 (-), 일직선에 있는 경우 0이 결과로 나옴
- 외적의 크기는 a, b 두 벡터가 만드는 평행사변형의 넓이와 같으므로, 2166번의 다각형의 면적은 CCW 값 계산 후, 2로 나누면 됨.
int ccw(int x1, int y1, int x2, int y2, int x3, int y3) {
int tmp = (x1*y2 + x2*y3 + x3*y1) - (y1*x2 - y2*x3 - y3*x1); //사선식
if (tmp > 0) {
return 1;
}
else if (tmp < 0) {
return -1;
}
else {
return 0;
}
}
댓글