원문은 http://local.wasp.uwa.edu.au/~pbourke/geometry/pointline/ 입니다.

P1(x1, y1)과 P2(x2, y2)를 지나는 선분의 공식은 아래와 같다.

P = P1 + u(P2 - P1)


점 P3(x3, y3)는 P1과 P2를 지나는 선분에 인접한 점이다. P3를 선분까지 수직으로 연장한 길이가 바로 우리가 구하고자 하는 값, 즉 최소 거리이다. 수직으로 연장해서 만나는 점을 P라고 하자. 즉, P는 선분 상의 점이 되겠다. 그렇다면, 벡터P3->P와 벡터 P2->P1를 정의할 수 있을 것이고, 이 두 벡터의 내적(Dot Product)는 0이다.

(P3 - P) dot (P2 - P1) = 0

위의 식의 P에 처음에 언급한 선분의 식(P에 대한)을 대입해보면...

[P3 - P1 - u(P2 - P1)] dot (P2 - P1) = 0

위의 식을 u에 대해서 풀어보면,



이 u 값을 다시 처음의 선분의 방정식(P1과 P2를 지나는)에 대입해 교점P에 대한 x, y에 대해 풀어보면...
x = x1 + u(x2 - x1)
y = y2 + u(y2 - y1)

그렇다면... 이렇게 구한 P와 P3의 거리가 바로 우리가 구하고자 했던 최소 거리값이 된다.





http://gisdeveloper.co.kr/384
Posted by 코딩하는 야구쟁이
,