์› ์ถฉ๋Œ์ฒดํฌ๋ž‘ AABB ์ถฉ๋Œ์ฒดํฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ถฉ๋Œ์ฒดํฌ๋ฅผ ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ธ€์ด์—์š”


๊ทธ๋ฆฌ๊ณ  ์ €๋„ ์ˆ˜ํ•™์ด๋ž‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ž˜ ์•„๋Š”๊ฒŒ ์•„๋‹ˆ๊ณ  ์ œ๊ฐ€ ์ดํ•ดํ•œ ๋ฒ”์œ„ ์•ˆ์—์„œ ์“ฐ๋Š” ๋‚ด์šฉ์ด๋ผ ํ‹€๋ฆฌ๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ ๋ถ€๋ถ„์ด ์žˆ์„์ˆ˜๋„ ์žˆ์–ด์š”


ใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…ก



1. ์›(circle) ์ถฉ๋Œ์ฒดํฌ



7cf08168f5dc3f8650bbd58b3680706ccbb8


7cf08268f5dc3f8650bbd58b368076695e80





์› ์ถฉ๋Œ์ฒดํฌ๋Š” ์œ„์— ์˜ฌ๋ผ์™€์žˆ๋Š” ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๋‘ ์›์ด ์ถฉ๋Œํ–ˆ๋Š”์ง€ ์•ˆํ–ˆ๋Š”์ง€๋ฅผ ์ฒดํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด์—์š”


๋‘ ์›์˜ ์ค‘์‹ฌ์ ์˜ ์ขŒํ‘œ๊ฐ€ ๊ฐ๊ฐ (x1,y1) (x2,y2)๊ณ  ๋ฐ˜์ง€๋ฆ„์ด ๊ฐ๊ฐ r1 r2 ๋ผ๋ฉด


๋‘ ์ค‘์‹ฌ์  ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ์ธ ( (x2-x1)^2+(y2-y1)^2 )^0.5 ๊ฐ€ r1๊ณผ r2์˜ ํ•ฉ๋ณด๋‹ค ์ž‘์œผ๋ฉด ์ถฉ๋Œํ–ˆ๋‹ค๊ณ  ํŒ์ •ํ•ด์š”


์œ„์˜ ์‹์—์„œ ^2๋Š” ์ œ๊ณฑ์ด๊ณ , ^0.5๋Š” ๋ฃจํŠธ์—์š”, ๋‘ ์  ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š” ๊ณต์‹์ด์—์š”




์ฒซ๋ฒˆ์งธ ๊ทธ๋ฆผ์€ ๋‘ ์›์˜ ๋ฐ˜์ง€๋ฆ„์˜ ํ•ฉ๋ณด๋‹ค ๋‘ ์ค‘์‹ฌ์  ์‚ฌ์ด์˜ ๊ธธ์ด๊ฐ€ ๋” ๊ธฐ๋‹ˆ๊นŒ ๋‘ ์›์€ ์ถฉ๋Œํ•˜์ง€ ์•Š์•˜๋‹ค๊ณ  ํŒ์ •ํ•ด์š”


๊ทธ๋ฆฌ๊ณ  ๋‘๋ฒˆ์งธ ๊ทธ๋ฆผ์€ ๋‘ ์›์˜ ๋ฐ˜์ง€๋ฆ„์˜ ํ•ฉ๋ณด๋‹ค ์ค‘์‹ฌ์  ์‚ฌ์ด์˜ ๊ธธ์ด๊ฐ€ ๋” ์ž‘์œผ๋‹ˆ๊นŒ ๋‘ ์›์ด ์ถฉ๋Œํ–ˆ๋‹ค๊ณ  ํŒ์ •ํ•˜๋Š”๊ฑฐ์—์š”




7cf08368f5dc3f8650bbd58b3687716d98





์œ„์˜ ๊ทธ๋ฆผ์€ ๋‘ ์›์ด ์ถฉ๋Œํ–ˆ์„๋•Œ์˜ ์ถฉ๋Œ๋ฒกํ„ฐ๋ฅผ ๋‚˜ํƒ€๋‚ธ ๊ทธ๋ฆผ์ด์—์š”


์ถฉ๋Œ๋ฒกํ„ฐ๋Š” ๋‘ ์›์ด ์ถฉ๋Œํ–ˆ์„๋•Œ, ๋‘ ์›์ด ์„œ๋กœ ์ถฉ๋Œํ•˜์ง€ ์•Š๋„๋ก ๋ฐ€์–ด๋‚ด๊ธฐ ์œ„ํ•œ ์ตœ์†Œ๊ธธ์ด์˜ ๋ฒกํ„ฐ๋ฅผ ์ด์•ผ๊ธฐํ•˜๋Š”๊ฑฐ์—์š”


์—ฌ๊ธฐ์„œ๋Š” ์˜ค๋ฅธ์ชฝ ์›์„ ์™ผ์ชฝ ์›๊ณผ ์ถฉ๋Œํ•˜์ง€ ์•Š๋Š” ์œ„์น˜๋กœ ๋ฐ€์–ด๋‚ด๊ธฐ ์œ„ํ•œ ์ตœ์†Œ๊ฑฐ๋ฆฌ์˜ ๋ฒกํ„ฐ๋กœ ๊ฐ€์ •ํ–ˆ์–ด์š”, ์œ„์˜ ๊ทธ๋ฆผ์—์„œ ์ดˆ๋ก์ƒ‰ ํ™”์‚ดํ‘œ๋กœ ๋‚˜ํƒ€๋‚ธ ๋ฒกํ„ฐ์—์š”




๊ทธ๋ฆฌ๊ณ  ๋‘ ์›์˜ ์ถฉ๋Œ์—์„œ์˜ ์ถฉ๋Œ๋ฒกํ„ฐ์˜ ๊ธธ์ด๋Š” ๋‘ ์›์˜ ๋ฐ˜์ง€๋ฆ„์˜ ํ•ฉ์—์„œ ์ค‘์‹ฌ์  ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๋บ€ ๊ฐ’์ด์—์š”, ์ฆ‰ ์•ž์˜ ๊ทธ๋ฆผ์—์„œ r1+r2์—์„œ d๋ฅผ ๋บ€ ๊ฐ’์ด์—์š”


๊ทธ๋Ÿฌ๋ฉด ๋‘ ์›์˜ ๋ฐ˜์ง€๋ฆ„์ด ๊ฒน์น˜๋Š” ๊ตฌ๊ฐ„์˜ ๊ธธ์ด๋ฅผ ์–ป์„์ˆ˜ ์žˆ์–ด์š”,


๊ทธ๋ฆฌ๊ณ  ์ถฉ๋Œ๋ฒกํ„ฐ์˜ ๋ฐฉํ–ฅ์€ ๋‘ ์›์˜ ํ•œ ์ค‘์‹ฌ์ ์—์„œ ๋‹ค๋ฅธ ์ค‘์‹ฌ์ ๊นŒ์ง€์˜ ๋ฐฉํ–ฅ์ด์—์š”, ์—ฌ๊ธฐ์„œ๋Š” ์˜ค๋ฅธ์ชฝ ์›์„ ์™ผ์ชฝ ์› ๋ฐ–์œผ๋กœ ๋ฐ€์–ด๋‚ด๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€์ •ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—, x1,y1์—์„œ x2,y2๋กœ ํ–ฅํ•˜๋Š” ๋ฐฉํ–ฅ์ด ๋˜์š”





์ฆ‰, ๋‘๋ฒˆ์งธ ์›์˜ ์ค‘์‹ฌ์ ์˜ ์ขŒํ‘œ์—์„œ, ์ฒซ๋ฒˆ์งธ ์›์˜ ์ค‘์‹ฌ์ ์˜ ์ขŒํ‘œ๋ฅผ ๋นผ์„œ, ์ฒซ๋ฒˆ์งธ์—์„œ ๋‘๋ฒˆ์งธ๋กœ ํ–ฅํ•˜๋Š” ๋ฒกํ„ฐ๋ฅผ ์–ป์€๋‹ค์Œ,


ํ•ด๋‹น ๋ฒกํ„ฐ๋ฅผ ์ •๊ทœํ™”(๋ฒกํ„ฐ์˜ x,y๊ฐ๊ฐ์„ ํ•ด๋‹น ๋ฒกํ„ฐ์˜ ๊ธธ์ด๋กœ ๋‚˜๋ˆ„๋Š”๊ฒƒ)ํ•ด์„œ ๋‹จ์œ„๋ฒกํ„ฐ(๊ธธ์ด๊ฐ€ 1์ธ ๋ฒกํ„ฐ)๋กœ ๋งŒ๋“ค๊ณ , ์—ฌ๊ธฐ์— ์•ž์—์„œ ๊ตฌํ•œ ์ถฉ๋Œ๋ฒกํ„ฐ์˜ ๊ธธ์ด๋ฅผ ๊ณฑํ•ด์ฃผ๋ฉด


๋‘๋ฒˆ์งธ ์›์„ ์ฒซ๋ฒˆ์งธ ์› ๋ฐ–์œผ๋กœ ๋ฐ€์–ด๋‚ด๊ธฐ ์œ„ํ•œ ์ถฉ๋Œ๋ฒกํ„ฐ๋ฅผ ์–ป์„์ˆ˜ ์žˆ์–ด์š”




ใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…ก

def circle_collision(x1,y1,r1,x2,y2,r2)

d = ((x2-x1)**2+(y2-y1)**2)**0.5

if d < r1+r2

return (r1+r2-d)*((x2-x1)/d) , (r1+r2-d)*((y2-y1)/d)

else

return nil,nil

end

end

ใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…ก




๊ทธ๋ฆฌ๊ณ  ์ด๊ฒŒ rubyํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ž‘์„ฑํ•œ ์› ์ถฉ๋Œ์ฒดํฌ์˜ ์ฝ”๋“œ์—์š”


๋‘ ์›์˜ ์ค‘์‹ฌ์ ๊ณผ ๋ฐ˜์ง€๋ฆ„์„ ๊ฐ๊ฐ x1,y1,r1 x2,y2,r2๋กœ ์ž…๋ ฅํ•˜๋ฉด


๋‘ ์›์ด ์ถฉ๋Œํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด nil์„ ์ถœ๋ ฅํ•˜๊ณ , ์ถฉ๋Œํ–ˆ๋‹ค๋ฉด ๊ทธ๋•Œ x2,y2,r2์›์„ x1,y1,r1์› ๋ฐ–์œผ๋กœ ๋ฐ€์–ด๋‚ด๊ธฐ ์œ„ํ•œ ๋ฒกํ„ฐ๋ฅผ ์ถœ๋ ฅํ•ด์ค˜์š”










2. AABB์ถฉ๋Œ์ฒดํฌ







7ff08168f5dc3f8650bbd58b3689726de7




AABB์ถฉ๋Œ์ฒดํฌ๋Š” ๊ธฐ์šธ์–ด์ง€์ง€ ์•Š์€ ๋‘ ์‚ฌ๊ฐํ˜•๊ฐ„์˜ ์ถฉ๋Œ์„ ์ฒดํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด์—์š”


๊ทธ๋ฆฌ๊ณ  ์—ฌ๊ธฐ์„œ๋Š” ์œ„์˜ ๊ทธ๋ฆผ์— ๋‚˜์™€์žˆ๋Š”๊ฒƒ์ฒ˜๋Ÿผ ๊ฐ ์‚ฌ๊ฐํ˜•๋“ค์„ ์ค‘์‹ฌ์ ์˜ ์ขŒํ‘œ x1,y1 x2,y2์™€


๊ฐ ์‚ฌ๊ฐํ˜•๋ณ„๋กœ ์ค‘์‹ฌ์ ์—์„œ x์ถ•์˜ ๊ฐ€์žฅ์ž๋ฆฌ๊นŒ์ง€์˜ ๊ธธ์ด์™€, y์ถ•์˜ ๊ฐ€์žฅ์ž๋ฆฌ๊นŒ์ง€์˜ ๊ธธ์ด์ธ rx1, ry1 ๊ทธ๋ฆฌ๊ณ  rx2, ry2๋กœ ์ž…๋ ฅํ•ด์„œ ์ถฉ๋Œ๊ฒ€์‚ฌ๋ฅผ ์ง„ํ–‰ํ•ด์š”


7ff08268f5dc3f8650bbd58b368476689d



7ff08368f5dc3f8650bbd58b3684766ff1



7ff08468f5dc3f8650bbd58b3684766570






๊ทธ๋ฆฌ๊ณ  ์ด๋•Œ


x์ถ•์—์„œ x2-x1์˜ ์ ˆ๋Œ€๊ฐ’์ด rx1+rx2๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ์™€


y์ถ•์—์„œ y2-y1์˜ ์ ˆ๋Œ€๊ฐ’์ด ry1+ry2๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ๋ฅผ


๋™์‹œ์— ๋งŒ์กฑํ•œ๋‹ค๋ฉด ๋‘ ์‚ฌ๊ฐํ˜•์€ ์ถฉ๋Œํ–ˆ๋‹ค๊ณ  ํŒ์ •ํ•ด์š”




x2-x1์˜ ์ ˆ๋Œ€๊ฐ’์€ x์ถ•์—์„œ์˜ ๋‘ ์‚ฌ๊ฐํ˜•์˜ ์ค‘์‹ฌ์  ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ์—์š”


๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ฐ’์ด ๋‘ ์‚ฌ๊ฐํ˜•์˜ x์ถ• ์œ„์—์„œ์˜ ํ•œ์ชฝ ๊ฐ€์žฅ์ž๋ฆฌ๊นŒ์ง€์˜ ๊ธธ์ด์˜ ํ•ฉ์ธ rx1+rx2๋ณด๋‹ค ์ž‘์œผ๋ฉด


๊ฒฐ๊ตญ ๋‘ ์‚ฌ๊ฐํ˜•์€ x์ถ•์—์„œ ์ ์œ ํ•˜๊ณ  ์žˆ๋Š” ์˜์—ญ์ด ๊ฒน์นœ๋‹ค๋Š” ์ด์•ผ๊ธฐ๊ฐ€ ๋˜์š”




๊ทธ๋ฆฌ๊ณ  y์ถ•์—์„œ๋„ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ y2-y1์˜ ์ ˆ๋Œ€๊ฐ’์ด ry1+ry2๋ณด๋‹ค ์ž‘๋‹ค๋ฉด


๊ฒฐ๊ตญ ๋‘ ์‚ฌ๊ฐํ˜•์€ x์ถ•๊ณผ y์ถ• ๋‘˜ ๋‹ค์—์„œ ์ ์œ ํ•˜๊ณ  ์žˆ๋Š” ์˜์—ญ์ด ๊ฒน์นœ๋‹ค๋Š”๊ฑฐ๋‹ˆ๊นŒ


๋‘ ์‚ฌ๊ฐํ˜•์€ ์ถฉ๋Œํ–ˆ๋‹ค๊ณ  ํŒ์ •ํ•˜๋Š”๊ฑฐ์—์š”




์œ„์˜ ์ฒซ๋ฒˆ์งธ ๋‘๋ฒˆ์งธ ๊ทธ๋ฆผ์ด ๋‘ ์‚ฌ๊ฐํ˜•์ด ์ถฉ๋Œํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ๊ณ , ์„ธ๋ฒˆ์งธ ๊ทธ๋ฆผ์ด ๋‘ ์‚ฌ๊ฐํ˜•์ด ์ถฉ๋Œํ•œ ๊ฒฝ์šฐ์—์š”


์ฒซ๋ฒˆ์งธ ๊ทธ๋ฆผ์€ x์ถ• y์ถ• ๋‘˜ ๋‹ค์—์„œ ์ ์œ ํ•˜๊ณ  ์žˆ๋Š” ์˜์—ญ์ด ๊ฒน์น˜์ง€ ์•Š๊ณ 


๋‘๋ฒˆ์งธ ๊ทธ๋ฆผ์€ y์ถ•์—์„œ๋Š” ์˜์—ญ์ด ๊ฒน์น˜์ง€๋งŒ x์ถ•์—์„œ๋Š” ์˜์—ญ์ด ๊ฒน์น˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—์š”, ์ฆ‰ ์ถฉ๋Œํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—์š”


๊ทธ๋ฆฌ๊ณ  ์„ธ๋ฒˆ์งธ ๊ทธ๋ฆผ์€ x์ถ• y์ถ• ๋‘˜ ๋‹ค์—์„œ ์ ์œ ํ•˜๊ณ  ์žˆ๋Š” ์˜์—ญ์ด ๊ฒน์ณ์„œ ๋‘ ์‚ฌ๊ฐํ˜•์ด ์ถฉ๋Œํ•œ ๊ฒฝ์šฐ์—์š”






7ff08568f5dc3f8650bbd58b3684716bd2


7ff08668f5dc3f8650bbd58b3689716e9b

์‚ฌ๊ฐํ˜•์˜ ์ถฉ๋Œ์—์„œ์˜ ์ถฉ๋Œ๋ฒกํ„ฐ ์—ญ์‹œ, ๋‘ ์‚ฌ๊ฐํ˜•์ด ์ถฉ๋Œํ• ๋•Œ ์‚ฌ๊ฐํ˜•์„ ์„œ๋กœ ์ถฉ๋Œํ•˜์ง€ ์•Š๋Š” ์œ„์น˜๋กœ ๋ฐ€์–ด๋‚ด๊ธฐ ์œ„ํ•œ ์ตœ์†Œ๊ฑฐ๋ฆฌ์˜ ๋ฒกํ„ฐ๋ฅผ ์ด์•ผ๊ธฐํ•ด์š”


๊ทธ๋ฆฌ๊ณ  ์ด๋ ‡๊ฒŒ ๋‘ ์‚ฌ๊ฐํ˜•์ด ์ถฉ๋Œํ• ๋•Œ์˜ ์ถฉ๋Œ๋ฒกํ„ฐ๋Š”, x์ถ•๊ณผ y์ถ•์˜ ๊ฒน์น˜๋Š” ๊ธธ์ด ์ค‘์—์„œ ๋” ๊ธธ์ด๊ฐ€ ์งง์€ ์ชฝ์ด์—์š”


์ฆ‰, x์ถ•์—์„œ ๊ฒน์น˜๋Š” ๊ธธ์ด์™€ y์ถ•์—์„œ ๊ฒน์น˜๋Š” ๊ธธ์ด๋ฅผ ๊ตฌํ•œ๋‹ค์Œ, ๋‘˜์ค‘์—์„œ ๋” ๊ธธ์ด๊ฐ€ ์งง์€ ์ถ•์—์„œ, ํ•ด๋‹น ๊ธธ์ด๋งŒํผ ์ด๋™์‹œํ‚ค๋ฉด ๋˜์š”


์ฆ‰, x์ถ•๊ณผ y์ถ• ๋‘˜ ๋‹ค์—์„œ ์ด๋™ํ•˜์ง€ ์•Š๊ณ  x์ถ•์—์„œ๋งŒ ์ด๋™ํ•˜๊ฑฐ๋‚˜ y์ถ•์—์„œ๋งŒ ์ด๋™ํ•ด์š”




์œ„์˜ ์ฒซ๋ฒˆ์งธ ๊ทธ๋ฆผ์€ x์ถ•๊ณผ y์ถ• ๊ฐ๊ฐ์˜ ์ถ•์—์„œ ๊ฒน์น˜๋Š” ์˜์—ญ์„ ํ‘œ์‹œํ•ด๋†“์€ ๊ทธ๋ฆผ์ด์—์š”


๊ทธ๋ฆฌ๊ณ  ๋‘๋ฒˆ์งธ ๊ทธ๋ฆผ์˜ ๊ฒฝ์šฐ์—์„œ ์ถฉ๋Œ๋ฒกํ„ฐ๋Š” ๋” ๊ธธ์ด๊ฐ€ ์งง์€ ์ดˆ๋ก์ƒ‰(y์ถ•)์ด์—์š”




๊ทธ๋ฆฌ๊ณ  ์ถฉ๋Œ๋ฒกํ„ฐ์˜ ๋ฐฉํ–ฅ์€ ์›ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ๋˜์š”, ๋งŒ์•ฝ 2๋ฒˆ ์‚ฌ๊ฐํ˜•์„ 1๋ฒˆ ์‚ฌ๊ฐํ˜• ๋ฐ–์œผ๋กœ ๋ฐ€์–ด๋‚ด๊ณ  ์‹ถ๋‹ค๋ฉด


x2๊ฐ€ x1๋ณด๋‹ค ํด๊ฒฝ์šฐ์— +๋ฐฉํ–ฅ, ์ž‘์„๊ฒฝ์šฐ์— -๋ฐฉํ–ฅ์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ๋˜์š”, y์ถ•๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์—์š”




๋‘ ์‚ฌ๊ฐํ˜•์ด ๊ฐ๊ฐ์˜ ์ถ•์—์„œ ๊ฒน์น˜๋Š” ๊ธธ์ด๋Š”, x์ถ•์ด๋ผ๋ฉด x์ถ•์˜ ๊ฐ ์‚ฌ๊ฐํ˜•์˜ ๊ฐ€์žฅ์ž๋ฆฌ๊นŒ์ง€์˜ ๊ธธ์ด์˜ ํ•ฉ์ธ rx1+rx2์—์„œ ์ค‘์‹ฌ์  ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ์ธ x2-x1์˜ ์ ˆ๋Œ€๊ฐ’์„ ๋นผ๋ฉด ๋˜์š”


y์ถ•๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์—์š” ry1+ry2์—์„œ y2-y1์˜ ์ ˆ๋Œ€๊ฐ’์„ ๋นผ๋ฉด ๋˜์š”




ใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…ก

def aabb_collision(x1,y1,rx1,ry1,x2,y2,rx2,ry2)

#1

dx, dy = (x2-x1).abs, (y2-y1).abs

if dx >= rx1+rx2 || dy >= ry1+ry2

return nil, nil

end

#2

dx, dy = rx1+rx2-dx, ry1+ry2-dy

if dx <= dy

if x2 > x1

return dx,0

else

return -dx,0

end

end

#3

if dy <= dx

if y2 > y1

return 0,dy

else

return 0,-dy

end

end

end

ใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…กใ…ก




๊ทธ๋ฆฌ๊ณ  ์ด๊ฒŒ AABB์ถฉ๋Œ์ฒดํฌ์˜ ์ฝ”๋“œ์—์š”, ์œ„์˜ ๊ทธ๋ฆผ์— ๋‚˜์™€์žˆ๋Š”๋Œ€๋กœ x1,y1,rx1,ry1,x2,y2,rx2,ry2๋ฅผ ์ž…๋ ฅํ•˜๋ฉด


๋‘ ์‚ฌ๊ฐํ˜•์ด ์ถฉ๋Œํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด nil์„ ์ถœ๋ ฅํ•˜๊ณ 


๋‘ ์‚ฌ๊ฐํ˜•์ด ์ถฉ๋Œํ•œ๋‹ค๋ฉด 2๋ฒˆ ์‚ฌ๊ฐํ˜•์„ 1๋ฒˆ ์‚ฌ๊ฐํ˜• ๋ฐ–์œผ๋กœ ๋ฐ€์–ด๋‚ด๋Š” ๋ฐฉํ–ฅ์˜ ์ถฉ๋Œ๋ฒกํ„ฐ๋ฅผ ์ถœ๋ ฅํ•ด์ค˜์š”




#1์ด ๋‘ ์‚ฌ๊ฐํ˜•์ด ์ถฉ๋Œํ–ˆ๋Š”์ง€์˜ ์—ฌ๋ถ€๋ฅผ ์ฒดํฌํ•˜๋Š” ๋ถ€๋ถ„์ด๊ณ 


#2๋Š” ๋งŒ์•ฝ x์ถ•์˜ ๊ฒน์น˜๋Š” ๊ฑฐ๋ฆฌ๊ฐ€ ๋” ์ž‘๋‹ค๋ฉด ์›ํ•˜๋Š” ๋ฐฉํ–ฅ์— ๋”ฐ๋ผ์„œ ๊ฐ’์„ +ํ˜น์€ -๋กœ ์ถœ๋ ฅํ•ด์ฃผ๋Š” ๋ถ€๋ถ„


#3์€ y์ถ•์˜ ๊ฒน์น˜๋Š” ๊ฑฐ๋ฆฌ๊ฐ€ ๋” ์ž‘์„๊ฒฝ์šฐ์— ์›ํ•˜๋Š” ๋ฐฉํ–ฅ์— ๋”ฐ๋ผ์„œ ๊ฐ’์„ +๋‚˜ -๋กœ ์ถœ๋ ฅํ•ด์ฃผ๋Š” ๋ถ€๋ถ„์ด์—์š”






์œ„์— ์˜ฌ๋ ค๋†“์€ ์˜์ƒ์€ ์› ์ถฉ๋Œ์ฒดํฌ์™€ AABB์ถฉ๋Œ์ฒดํฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ”Œ๋ ˆ์ด์–ด๋ฅผ ๋ฐ€์–ด๋‚ด๋Š” ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋งŒ๋“  ์˜์ƒ์ด์—์š”, ์˜์ƒ์˜ ์ฒซ๋ฒˆ์งธ์™€ ๋‘๋ฒˆ์งธ๊ฐ€ ์› ์ถฉ๋Œ์ฒดํฌ๊ณ , ์„ธ๋ฒˆ์งธ์™€ ๋„ค๋ฒˆ์งธ๊ฐ€ AABB์ถฉ๋Œ์ฒดํฌ์—์š”


๋ชจ๋‘ ์˜ค๋ธŒ์ ํŠธ-ํ”Œ๋ ˆ์ด์–ด ์ˆœ์„œ๋กœ ์ถฉ๋Œ์ฒดํฌ๋ฅผ ํ•ด์„œ, ํ”Œ๋ ˆ์ด์–ด๋ฅผ ์˜ค๋ธŒ์ ํŠธ ๋ฐ–์œผ๋กœ ๋ฐ€์–ด๋‚ด๋Š” ์ถฉ๋Œ๋ฒกํ„ฐ๋ฅผ ๊ตฌํ•œ๋‹ค์Œ


์˜ค๋ธŒ์ ํŠธ๊ฐ€ ๊ณ ์ •๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ํ”Œ๋ ˆ์ด์–ด๋งŒ ํ•ด๋‹น ์ถฉ๋Œ๋ฒกํ„ฐ๋งŒํผ ๋ฐ€์–ด๋‚ด๋Š” ๋ฐฉ์‹์ด๊ณ 


์˜ค๋ธŒ์ ํŠธ๊ฐ€ ๋ฐ€๋ ค๋‚˜๋Š” ๊ฒฝ์šฐ์—๋Š” ํ”Œ๋ ˆ์ด์–ด๋ฅผ ํ•ด๋‹น ์ถฉ๋Œ๋ฒกํ„ฐ๋งŒํผ ๋ฐ€์–ด๋‚ด๋ฉด์„œ, ๋™์‹œ์— ์˜ค๋ธŒ์ ํŠธ๋„ ํ•ด๋‹น ์ถฉ๋Œ๋ฒกํ„ฐ์™€ ๋ฐ˜๋Œ€๋ฐฉํ–ฅ์œผ๋กœ ์ถฉ๋Œ๋ฒกํ„ฐ์˜ 0.2๋ฐฐ๋งŒํผ ๋ฐ€๋ ค๋‚˜๊ฒŒ ์„ค์ •ํ•œ๊ฑฐ์—์š”


์ด๋ ‡๊ฒŒํ•˜๋ฉด ๋ฌด๊ฒŒ๊ฐ€ ์žˆ์–ด์„œ ์ž˜ ๋ฐ€๋ ค๋‚˜์ง€ ์•Š๋Š” ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋งŒ๋“ค์ˆ˜ ์žˆ์–ด์š”