Как найти ближайшую точку на отрезке?

Есть отрезок заданный точками AB.

Есть точка X.

Как найти координату точки Z, ближайшей к X, расположенной на отрезке AB?


Ответы (1 шт):

Автор решения: Aziz Umarov

Уравнение прямой проходящей через 2 точки AB

A(x0,y0), B(x1,y1)
(x-x0)/(x1-x0) = (y-y0)/(y1-y0) 

Уравнение прямой проходящей через 2 точки XZ

Z(x2,y2), Z(x3,y3)
(x-x2)/(x3-x2) = (y-y2)/(y3-y2)

преобразуем в уравнение вида

y = k1x + b1,
y = k2x + b2,

(x-x0)/(x1-x0) = (y-y0)/(y1-y0) 
 y = (x-x0)*(y1-y0) / (x1-x0) = (y1-y0) / (x1-x0)*x - x0*(y1-y0) / (x1-x0)

(x-x2)/(x3-x2) = (y-y2)/(y3-y2)
 y = (x-x2)*(y3-y2) / (x3-x2) = (y3-y2) / (x3-x2)*x - x2*(y3-y2) / (x3-x2)

если прямые перпендикулярны то (1 + k1·k2 = 0)

подставив в первое уравнение точку Z(x3,y3) и перпендикулярность то мы имеем

y3 = (x3-x0)*(y1-y0) / (x1-x0) = (y1-y0) / (x1-x0)*x3 - x0*(y1-y0) / (x1-x0)
1 + (y3-y2) / (x3-x2)* (y1-y0) / (x1-x0) = 0

2 уравнения 2 неизвестных x3,y3

→ Ссылка