Расстояние между точкой и линией определяется как:
d = | (x_2 - x_1) (y_1 - y_0) - (x_1 - x_0) (y_2 - y_1) |/ sqrt ((x_2 - x_1) ^ 2 - (y_2 - y_1) ^ 2),
, которая является расширением точечного произведения, где (x_0, y_0) - координаты точки, и (x_1, y_1) & (x_2, y_2) являются конечными точками линии.
Было бы довольно просто рассчитать это для каждого набора точек, а затем просто определить, какая из них является самой низкой.Я не уверен, что нет более элегантного способа сделать это, но я не знаю об этом.Хотя я бы хотел посмотреть, ответит ли кто-нибудь здесь одним из них!
Редактировать: Извините, что математика здесь выглядит такой грязной без форматирования.Вот изображение того, как выглядит это уравнение, выполненное красиво:
Точка к строке!http://mathworld.wolfram.com/images/equations/Point-LineDistance2-Dimensional/NumberedEquation8.gif
Другое редактирование: Как указал Крис в своем посте, это не работает, если точки находятся в линии, т. Е. Если линия определена как (0,0) - (0,1) иточка на (0,10).Как он объясняет, вам нужно проверить, чтобы убедиться, что рассматриваемая точка на самом деле не находится на «расширенном пути» самой линии.Если это так, то это просто расстояние между ближайшей конечной точкой и точкой.Вся заслуга Криса!