수학을 시작할 수 있습니다. 나는 베 지어 정의하는 방법을 차 모르겠지만, 해당 에 있어야합니다 :
(x(t), y(t)) = (a_x + b_x t + c_x t^2, a_y + b_y t + c_y t^2),
곳 0 < t < 1
. a, b, c는 곡선을 정의하는 6 개의 상수입니다.
당신은 (X, Y)까지의 거리를 원하는 :
sqrt((X - x(t))^2 + (Y - y(t))^2 )
위의 양을 최소화 t
, 당신이 t
과의 1 차 미분 상대를 취할를 찾으려면 0으로 그와 동일하게 설정입니다. t
에서 차 방정식이
0 = (a_x - X + b_x t + c_x t^2) (b_x + 2 c-x t) + (a_y - Y + b_y t + c_y t^2) (b_y + 2 c_y t)
: 이것은합니다 (SQRT 2의 요소를 삭제) 제공합니다. 분석 솔루션은 이미 알려져 있으며 웹에서 찾을 수 있습니다. t
의 힘의 계수 (즉, 0 = a + bt + ct^2 + dt^3)를 얻기 위해 대수학을 약간 수행해야 할 것입니다. 예를 들어 Newton-Raphson을 사용하여 숫자 방정식을 대신 풀 수 있습니다.
그러나 세 가지 솔루션이 모두 0 < t < 1
에없는 경우에주의하십시오. 이 경우 (X, Y) (첫 번째 방정식)까지의 거리 값을 t = 0
및 t = 1
으로 계산하고 둘 중 가장 작은 거리를 계산하면됩니다.
편집 :
당신이 1 차 미분 = 0를 해결할 때 실제로, 당신이 얻을 솔루션은 최대 거리뿐만 아니라 최소가 될 수 있습니다. 따라서 얻을 수있는 솔루션의 거리 (1 차 방정식) (t
의 값은 최대 3 개)와 t=0
과 t=1
의 거리를 계산하고 모든 값의 실제 최소값을 선택해야합니다.
대부분 5 차 곡선에 대한 구현은 수정하지 않고 2 차 곡선에서도 작동합니다. – toto2