posted by WizardMania 2014. 10. 22. 14:17

3차원 공간에서 선분과 선분의 최단점(가장가까운점) 구하기



두 선분 L1과 L2가 존재할때 두선분의 최단점을 구해보자.


일단 두선분을 직선의 방적식으로 나타내면 아래와 같다.



P0과 Q0를 이은 벡터(P0-Q0)를 W0라고 하고 구한 최단점을 P(sc), Q(tc) 최단점을 이은 벡터를 Wc라고 하자


위의 직선의 방정식으로 정리하면



또한 P0 - Q0를 W0라 한다면 아래와 같이 나타낼 수 있다.



최단점을 이은 벡터 Wc는 u와 v 벡터에 직교할 것이다.



위식들을 바탕으로 연립방정식을 만들 수 있다.



수식을 간단하게 하기위해 아래와 같다라고 하고 연립방정식을 sc와 tc에 대하여 풀면된다



한가지 생각해야 할 것이 두벡터가 평행할때 이다.


이 0이라면 두벡터는 평행할 것 이다.


최종적으로 구한 sc tc값을 직선의 방정식에 대입하면 해당점을 구할수 있다.




위의 수식대로 직선의 최단점을 구할수 있다. 하지만 선분이라면 최단점이 선분의 범위를 벗어나는것을 고려해야 한다.

위의 그림처럼 최단점하나가 선분의 범위 밖에 있거나 둘다 밖에 있을수도 있다. (초록색)

이경우 선분의 시작 혹은 끝점이 최단점이 되어야한다. (붉은색)


따라서 선분범위내에 존재 하기 위해서는 sc와 tc의 의 범위가 0에서 1사이어야 한다.

0보다 작다면 선분의 시작점을 가까운점으로, 1보다크다면 선분의 끝점을 가까운점으로 해야 될 것 이다.


sc가 0일경우 Wc의 최소길이를 생각해보자

Wc는 아래와 같이 구할 수 있다.


sc는 0이므로



Wc의 최소길이를 구해야하는데 을 구하는것이 계산이 쉬워진다.




구해진 식에서 t에대한 도함수를 구하면



식을 tc에 대하여 풀면




sc가 1일 경우를 생각해 보자


구해진식에서 t에대한 도함수를 구하면



식을 tc에 대하여 풀면 



따라서 선분범위가 0~1을 벗어난다면 위의 두식으로 구할 수 있다.



'프로그래밍 > 수학, 물리' 카테고리의 다른 글

AABB와 OBB  (0) 2014.10.27
광선 vs 구 교차판정  (0) 2014.10.27
선분 점 최단점과 최단거리  (0) 2014.10.21
광선 점 최단점과 최단거리  (0) 2014.10.20
구 vs 구 교차판정  (0) 2014.10.20