Нахождение ближайшей линии и ее x, y местоположения - PullRequest
0 голосов
/ 21 октября 2018

Предположим, у меня есть следующий график.Я знаю местоположение A, B, C, D, E (x, y).Моя проблема заключается в том, чтобы найти, какая линия является ближайшей к точке E. А также я хочу нарисовать новую линию (синего цвета) между точкой и ближайшей линией.Как я могу найти (x, y), чтобы я мог нарисовать линию?

enter image description here

1 Ответ

0 голосов
/ 21 октября 2018

Необходимо выполнить проекцию точки E на линию AB, определить, находится ли эта проекция в диапазоне отрезка AB, и найти длину, перпендикулярную точке проекции.То же самое для сегмента CD.

Чтобы найти точку проекции, получите вектор направления AB и AE

AB = (B - A)
AE = (E - A)

и найдите параметр, используя скалярное произведение

 t = (AB * AE) / (AB * AB) 

, если tлежит вне rnage 0..1, то ближайшая точка отрезка является одним из концов.В противном случае найдите точку проекции и длину проекции

P = A + AB * t
Len = length(E - P)
...