๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜/์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ข…๋ฅ˜

CCW (Counter Clock Wise)

by ๐Ÿณ Laboon 2025. 6. 30.

์„ธ ์ ์˜ ๋ฐฉํ–ฅ์„ฑ์„ ํŒ๋‹จํ•˜๋Š” ๊ธฐํ•˜ํ•™์  ๋ฌธ์ œ

๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ ์‹œ๊ณ„ ๋ฐฉํ–ฅ ์ผ์ง์„ 

 

CCW ๊ฐ’์— ์˜ํ•ด ์„ธ ์ ์ด ์–ด๋А ๋ฐฉํ–ฅ์œผ๋กœ ํ–ฅํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

๊ณต์‹์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

CCW(A, B, C) = (B.x - A.x) × (C.y - A.y) - (B.y - A.y) × (C.x - A.x)

๊ฒฐ๊ณผ ๊ฐ’์— ๋”ฐ๋ผ ์–‘์ˆ˜: ๋ฐ˜์‹œ๊ณ„๋ฐฉํ–ฅ, ์Œ์ˆ˜: ์‹œ๊ณ„ ๋ฐฉํ–ฅ, 0: ์ผ์ง์„ ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

 

CCW๊ฐ€ ์–ด๋–ป๊ฒŒ ๋„์ถœ๋˜๋Š”์ง€ ์•Œ์•„๋ณด์ž.

์ขŒํ‘œ ์›์ 

์ขŒ์ธก ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ์ขŒํ‘œ๋ฅผ ๊ฐ€์ง„ ์„ธ ์ ์ด ์žˆ์„ ๋•Œ, A๋ฅผ ์›์ ์œผ๋กœ C์™€ B์˜ ๋ฒกํ„ฐ๋ฅผ ๊ตฌํ•˜๋ฉด ์˜ค๋ฅธ์ชฝ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๋œ๋‹ค.

 

๊ณต์‹์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

A' = (0, 0) ← A์—์„œ A๋ฅผ ๋บ€ ๊ฒƒ
B' = (bx - ax, by - ay) ← B์—์„œ A๋ฅผ ๋บ€ ๊ฒƒ (6, 2) ์ด๋ผ๊ณ  ๊ฐ€์ •
C' = (cx - ax, cy - ay) ← C์—์„œ A๋ฅผ ๋บ€ ๊ฒƒ (7, 3) ๋ผ๊ณ  ๊ฐ€์ •

 

๊ทธ๋Ÿผ ๋‘ ๋ฒกํ„ฐ๊ฐ„์˜ ํšŒ์ „ ๋ฐฉํ–ฅ์„ ์•Œ์•„๋ณด์ž.

 

2D์—์„œ ์™ธ์  ๊ณต์‹:
๋ฒกํ„ฐ u = (ux, uy)
๋ฒกํ„ฐ v = (vx, vy)
u × v = ux × vy - uy × vx


2์ฐจ์› ๋ฒกํ„ฐ์˜ ์™ธ์  ๊ณต์‹์„ ํ†ตํ•ด ๋ฐฉํ–ฅ์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

B`(6, 2)์™€ C`(7, 3)์˜ ๋ฐฉํ–ฅ์„ ๊ตฌํ•ด๋ณด์ž.

6 * 3 - 2 * 7 = 4๋กœ ์–‘์ˆ˜์ธ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ํ–ฅํ•จ

 

์‹ค์ œ ๊ทธ๋ฆผ์—์„œ ํ™•์ธํ•œ ๊ฒฐ๊ณผ๋„ B -> C ๋ฅผ ํ–ฅํ•˜๋Š” ๋ฐฉํ–ฅ์€ ๋ฐ˜์‹œ๊ณ„๋ฐฉํ–ฅ์ด๋‹ค.

์›์  ์ด๋™๋ถ€ํ„ฐ 2์ฐจ์› ์™ธ์  ๊ณต์‹์„ ๋ชจ๋‘ ์ ์šฉํ•œ๊ฒŒ CCW ์ด๋‹ค.

 

์šฐ๋ฆฌ๋Š” ์•ž์œผ๋กœ CCW๋ฅผ ํ™œ์šฉํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์œผ๋กœ BOJ์˜ ์„ ๋ถ„ ๊ต์ฐจ 1 ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด๋ณด์ž. (๋‹ค์Œ ํฌ์ŠคํŠธ์—์„œ)