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


선(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)이 충돌한 것이다.

  1. VoidCat 2013.11.28 22:01

    공식을 t에 대해서 정리하는 과정에서
    A^2과 -2AC가 증발해버렸내요.
    따라서 c = (A-C)^2 -r^2 이 됩니다.

    • hanstar17 2013.11.29 13:51 신고

      수정하였습니다.

      꼼꼼히 읽어보시고 틀린 부분을 넘어가지 않고 지적해 주셔서 고맙습니다!ㅋ