알고리즘

다각형2다각형 충돌 선별

조규현15 2015. 6. 13. 16:37
반응형

아래 알고리즘을 사용해서 급하게 짜봤다.

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