아래 알고리즘을 사용해서 급하게 짜봤다.
function Rect2Rect (RECT, RECT2)
for j=1,4,1 do
for i=1,2,1 do
local d1 = {x=RECT[1+i].x-RECT[1].x,y=RECT[1+i].y-RECT[1].y}
local d2 = {x=RECT[2+i].x-RECT[1].x,y=RECT[2+i].y-RECT[1].y}
local p = {x=RECT2[j].x-RECT[1].x,y=RECT2[j].y-RECT[1].y}
t2 = (p.x*d1.y-p.y*d1.x)/(d2.x*d1.y-d2.y*d1.x)
t1 = (p.x-t2*d2.x)/d1.x
if t1>=0 and t1<=1 and t2>=0 and t2<=1 and t1+t2>=0 and t1+t2<=1 then
return true
end
end
end
return false
end
side = 4
RECT1 = {{x=10,y=10},{x=15,y=25},{x=20,y=5},{x=25,y=20}}
RECT2 = {{x=0,y=0},{x=0,y=10},{x=10,y=0},{x=10,y=10}}
if( Rect2Rect(RECT1, RECT2) ) then
print("R1@R2 Inner")
else
if( Rect2Rect(RECT2, RECT1) ) then
print("R2@R1 Inner")
end
end
다른 알고리즘으로는 다각형2점 에서 절대외부의 임의의점(x=-1000,y=-1000)과 점의 선분과 다각형의 4변과 교차점의 개수를 구하고
개수가 짝수라면 Outter 홀수라면 Inner로 검출하는 방법도 있다.
'알고리즘' 카테고리의 다른 글
a* search (0) | 2015.07.09 |
---|---|
다각형2다각형 충돌 선별2 (0) | 2015.06.19 |
다각형에 특정 점 포함 유무선별 (0) | 2015.06.13 |
사각형 그리기 (0) | 2015.02.13 |
더블 버퍼링 (0) | 2015.02.12 |