Как найти ближайшую точку на отрезке?
Есть отрезок заданный точками 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