수학/이론

한 점과 가장 가까운 곡선 위의 점 구하기

tsyang 2021. 9. 4. 20:51

※ 매개변수로 표현할 수 있는 곡선 (ex. 베지에 곡선)의 경우만 다룸.

 

관련 글 :

2021.07.11 - [이론] - 곡선(Curve) & 스플라인(Spline)

 

곡선(Curve) & 스플라인(Spline)

곡선 곡선을 표현하기에 앞서, 두 정점 (A, B) 사이에 있는 점 P를 다음과 같이 표현할 수 있다. 또한 곡선은 t에 대한 방정식(P(t))으로 표현할 수 있다. 베지에 곡선(Bézier Curves) n차 베지에 곡선은 n

tsyang.tistory.com

 

문제


Q ) t에대한 다항식으로 이뤄져 있는 곡선 q(t) 와 곡선 밖의 점 P가 있다. 이때 점 P와 가장 가까운 곡선 q(t) 위의 점 X는 어떻게 구할 수 있을까?

 

곡선 q(t)를 2차원상의 3차 베지에 곡선이라고 하자. 그렇다면 q(t)=a0+a1t+a2t2+a3t3,t[0,1] 으로 표현할 수 있다.

 

이때 q(t)위의 한 점을 좌표로 나타내면 (x(t),y(t)) 라고 할 수 있다. 

 

P와 곡선q(t) 위의 한 점과의 거리의 제곱은 다음과 같은 f(t)로 표현할 수 있다.

 

f(t)=(x(t)Px)2+(y(t)Py)2

 

그러면 f(t)의 값이 최소가되는 t를 찾는다면 P와 가장 가까운 점X의 좌표를 구할 수 있다.

 

t[0,1]에서 f(t)최소값은 구간의 양 끝이거나(즉 t=0,1), f(t)의 극점 (즉 f=0) 중 하나이다.

 

이제 g(t)=f(t)라고 정의해주기로 하자.

(만약 유리(rational) 베지에 커브인 경우 g(t)를 다르게 정의한다. 이 경우 참고에 달아놓은 자료 참고.)

 

그렇다면 g(t)=0을 만족하는 t는 어떻게 구할까? 

 

 

 

루트 격리하기

우선 루트를 격리해야 한다. 이 경우 중근을 1개로 다루어야 하므로 스트룸 정리를 사용한다. 스트룸 정리에 대한 내용은 다음 글 참고

 

2021.08.13 - [수학] - 스트룸 정리 (Strum's theorem)

 

스트룸 정리 (Strum's theorem)

루트 격리 (root isolation) 위 다항식의 실수 근을 구하는 알고리즘을 짜려면 어떻게 해야할까? 뉴턴 방법이나 이분 매칭 등을 써서 그 값을 구할 수 있지만 위와 같이 실근이 2개 이상인 경우 모든

tsyang.tistory.com

 

만약 구간 [0,1)에 근이 존재하지 않는다면 t=0,1의 값만 구해서 어떤 것이 최솟값인지 알아내면 된다. 근이 1개 이상 존재하는 경우 루트를 격리한다. 이때 격리된 구간을 [a,b) 라고 하자.

 

 

 

 

계산할 필요 없는 근 제외하기

우리는 t[0,1] 내의 f(t)의 최소값을 구하고자 한다. 그리고 f(t)의 최소값은 구간의 양 끝이나 아래로 볼록한 극점 중 하나이다. 다시 말하면 g(t)=f(t)=0tf(t)의 아래로 볼록한 극점만 찾으면 된다. 따라서 다음의 경우들은 제외된다.

근을 구할 필요 없는 경우

 

우리가 원하는 근은 다음과 같은 형태이다.

 

 

그리고 위와 같은 형태는 앞서 구한 구간 (a,b]에서 다음과 같은 성질을 지닌다.


g(a)<0,g(b)>0

 

 

따라서 종합하자면 스트룸 정리를 통해 g(t)의 루트를 격리하고 격리된 구간 (a,b] 에 대해 g(a)<0,g(b)>0 인 경우만 근을 구해주면 된다.

 

 

 

근 구하기

 

근을 구하는 방법은 다음 글을 참고

2021.08.29 - [수학] - 다항식의 근 구하기

 

다항식의 근 구하기

루트격리(root isolation) 루트 격리는 근이 여러 개인 다항식에서 정해진 개수의 근이 존재하는 구간을 구하는 것이다. (주로 근이 1개인 구간을 구한다.) 이를 이용해서 근 구하기 알고리즘 등을 사

tsyang.tistory.com

 

참고로 이미 앞선 조건에서 g(a)g(b)<0 임을 보장할 수 있으니 bracket을 사용하는 알고리즘을 쉽게 적용할 수 있다. 

 

g(ti)=0ti(i=0,1,2,...,n)를 구했다면 한 점과 가장 가까운 최소점은 q(ti),q(0),q(1)중 하나일 것이다.

 

 

 

 

참고)

https://hal.inria.fr/file/index/docid/518379/filename/Xiao-DiaoChen2007c.pdf

'수학 > 이론' 카테고리의 다른 글

다항식의 근 구하기  (0) 2021.08.29
스트룸 정리 (Strum's theorem)  (1) 2021.08.13