티스토리 뷰

알고리즘/기하

CCW

산타 브라운 2018. 9. 2. 15:16

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;

            }

        }

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함