티스토리 뷰
부분합.
CCW 판별.
CCW => Counter Clock Wise 의 줄인말이다. 2차원 좌표에서 세점이 존재할때 ( A, B, C ). 두점을 이은 선분을 긋는다( A -> B). 그 선분( A -> B, 방향이 A에서 B )을 기준으로 나머지 한점(C)이 시계방향에 있는지 시계 반대방향에 있는지 판별하는 것이다.
A -> B 방향으로 쭉 보았을때 왼쪽에 있는지 오른쪽에 있는 지.
그림으로 표현하면
A 에서 B 점으로 향하는 선분에서 다음에 올 C나 D가 시계 방향인지 반시계 방향인지 확인 할 것이다.
이는 외적을 통해서 쉽게 알아 낼 수 있는데.
| ax bx cx |
| ay by cy |
$$ (a{\tiny x} * b{\tiny y}) - (b{\tiny x} * a{\tiny y}) + ( b{\tiny x} * c{\tiny y} ) - ( c{\tiny x} * b{\tiny y} ) + ( c{\tiny x} * a{\tiny y} ) - ( a{\tiny x} * c{\tiny y} ) $$
$$ = (c{\tiny x} - a{\tiny x}) * (c{\tiny y} - b{\tiny y}) - (c{\tiny y} - a{\tiny y}) * (c{\tiny x} - b{\tiny x}) $$
이 결과 값이 양수인지 음수인지에 따라 CCW 인지 CW인지 를 판별 할 수 있다.
왜 외적을 하면 되는가 ? 이 값을 3점의 외적 보다 각 벡터의 외적으로 보는것이 편하다
$$ vector {\overline{AC}} = < (c{\tiny x} - a{\tiny x}), (c{\tiny y} - a{\tiny y})>$$
$$ vector {\overline{BC}} = <(c{\tiny x} - b{\tiny x}) ,(c{\tiny y} - b{\tiny y})> $$
이렇게 보았을 때, CCW로 돌게되면 양수가 되고 ( 벡터의 외적시 오른손 법칙 참고 : https://ko.m.wikipedia.org/wiki/오른손_법칙 )
CW로 돌게되면 음수가 되고, 같은 직선상에 존재한다면 0이 된다. ( 같은 방향 벡터를 외적하면 0이된다. )
- Total
- Today
- Yesterday
- 블로그 개설
- C# 책
- 창숨김 다운
- 블로그
- 창숨기기
- C#책
- ROS2
- ubuntu
- 책 소개
- c#ㄱㄱ
- ROS2 설치
- 블로그 이야기
- 디스크 쓰기 금지되어 있습니다
- robot
- 2000au
- c#
- 창숨김 프로그램
- Node
- c#초보
- C#입문
- 창숨김
- C 책
- USB
- iptime 2000au
- c#.net
- readonly
- C# 속으루..
- 블로그 공지
- ipTIME
- 창숨기기 프로그램
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |