반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- upper_bound
- dfs
- 연결요소
- Docker
- 처우협의
- 백트래킹
- BFS
- softeer
- msSQL
- 퇴사통보
- 소프티어
- 파라메트릭
- 이분탐색
- compose
- boj #19237 #어른 상어
- @P0
- 물채우기
- OFFSET
- 13908
- 기술면접
- BOJ
- Kafka
- 매개변수탐색
- 경력
- 성적평가
- 오퍼레터
- 처우산정
- 6987
- 백준
- incr
Archives
- Today
- Total
기술 블로그
[기하] 점 3개의 방향성을 나타내는 CCW 본문
728x90
반응형
※ 이 글의 모든 정보 및 그림은 https://www.acmicpc.net/blog/view/27
세 점 P1(x1, y1), P2(x2, y2), P3(x3, y3)가 있을 때,
점 3개를 이은 선분은 어떤 방향성을 나타내게 될까요? 11758번 문제: CCW
가능한 경우의 수는 총 3가지가 있습니다.
① 시계 방향(-1)
② 일직선(0)
③ 반시계 방향(1)
시계 방향을 -1, 일직선을 0, 반시계 방향을 1이라고 했을 때,
P1은 검정색, P2는 초록색, P3을 파란색으로 나타내면 아래 그림과 같습니다.
여기서 S의 부호에 따라서, 다음과 같이 세 가지로 나눌 수 있습니다.
S > 0 : 반시계 방향
S = 0 : 일직선
S < 0 : 시계 방향
코드
1 2 3 4 5 6 7 8 9 10 | 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; // 일직선 } | cs |
728x90
반응형
'알고리즘' 카테고리의 다른 글
[파이썬] 다항식 곱셈 계산 (0) | 2018.11.07 |
---|---|
BFS와 DFS (0) | 2018.11.01 |
[유클리드 알고리즘] 최대공약수와 최소공배수 (0) | 2018.10.14 |
효율적인 약수의 개수를 찾는 알고리즘 (0) | 2018.10.14 |
이분 매칭 (0) | 2018.09.29 |