Расстоянием от точки до отрезка является либо перпендикуляр, опущенный из этой точки на отрезок, либо минимальное расстояние от точки до одного из концов отрезка.
Если треугольник, вершинами которого является данная точка и концы заданного отрезка, является тупоугольным (проверка на тупоугольность проводится рассмотрением знака скалярного произведения соответствующих векторов, построенных на сторонах треугольника (кос тупого угла отрицательный))(т. е. из данной точки невозможно опустить перпендикуляр на данный отрезок), то расстоянием от точки до отрезка считается минимальное расстояние от данной точки, до одного из концов отрезка. Оно определяется с помощью формулы:
((х1- х2)2 + (у1 - у2)2)-1/2.
Если все же перпендикуляр опустить возможно, то расстоянием от точки до отрезка считается длина этого перпендикуляра. Ее можно определить двумя способами:
1) посчитав площадь треугольника по двум формулам (полувысота на сторону и полупроизведение сторон на синус угла между ними) мы можем выразить высоту как:
h = (AC • AB • sin (AC, AB)) / BC ;
2) можем определить координаты точки пресечения отрезка с перепендикуляром, опущенным из данной точки на отрезок и посчитать расстояние между двумя точками. Для этого сначала нам надо найти уравнение перпендикуляра к данной прямой, проходящего через данную точку, затем решить систему уравнений (k и l - координаты вершины перпендикуляра, x1, y1, x2, y2 - координаты концов отрезка):
(1)(x - x1)(y2 - y1) = (y - y1)(x2 - x1)
(2) (x - k)(x2 - x1) = - (y - l)(y2 - y1)
Если (x2 - x1) = 0, то решение:
x = x1
y = l.
Если (y2 - y1) = 0, то решение:
y = y1
x = k.
В остальных случаях (пусть (x2 - x1) = α, (y2 - y1) = β):
x = (α / β) (y - y1) + x1
y = ((α2 / β)y1 + α (k - x1) + βl) / ((α2 / β) + β).