본문 바로가기
Mathematics/Proof

[기하학] 선분-원 충돌 검사(Line Circle Collision Check)

by hanstar17 2013. 7. 12.

   선분과 원의 충돌 검사를 하기 위해선 먼저 직선과 원의 충돌 검사를 한 후 충돌지점이 선분의 영역에 포함되는지 검사해야 한다. 따라서 먼저 직선과 원의 충돌 검사를 해보자. 직선과 원의 충돌 지점은 직선의 방정식과 원의 방정식의 해를 푸는 것이겠다.


선(A, B)의 방정식


원(C, r)의 방정식


해를 구하기 위해서 먼저 원의 방정식을 풀어 보자.


그 다음에 선의 방정식을 X에 대입한다.


이 방정식을 만족시키는 t가 있으면 직선과 원이 충돌하는 것이고, 그 t를 직선의 방정식에 대입해 정확한 충돌 지점까지 구할 수 있다. 그럼 위 공식을 t에 대해 정리해보자.

정리하고 보니 2차 방정식이다. 근의 공식을 이용해 t를 구해보자.

에서



근의 공식에서  

< 0 이면 해가 없고,

= 0 이면 해가 1개(접선),

> 0 이면 해가 2개이므로

이를 이용해 직선과의 충돌여부를 알 수 있다.


t에 관하여 나타낸 방정식에서

이므로 해가 있는 경우에 한해서 t를 구할 수 있다.

이 t를 직선의 방정식에 대입시키면 해이자 충돌지점인 X도 구할 수 있다.


직선-원 충돌이 아닌 선분-원 충돌이다.

하지만 t까지 이미 구했으므로 다 한 것이나 다름 없다.

t가 선분의 영역에 포함되는지만 확인하면 된다.


다시 직선의 방정식을 보면


이 중 선분의 영역은


따라서 구한 t(최대 2개)중 하나라도 이면 선분(A,B)와 원(C,r)이 충돌한 것이다.

'Mathematics > Proof' 카테고리의 다른 글

피타고라스의 정리 증명  (0) 2014.11.06
[Vectors] 벡터의 외적 - Cross Product  (0) 2013.07.19
[Vectors] 벡터의 내적 - Dot Product  (2) 2013.05.16