Как насчет следующего ...
Итерация по всем отрезкам линии
lineSegSlope = Вычислить наклон для каждого отрезка линии
Нарисуйте притворную линию из рассматриваемой точкикоторый пересекает текущий сегмент линии.это делается путем инвертирования lineSegSlope и умножения на -1, чтобы получить новый наклон, а затем подставить целевую точку X, Y и новый наклон в y-y1 = b * (x-x1).Ваш X переходит в x1, ваш Y переходит в Y1, а ваш newSlope переходит в B.
составляет уравнение для отрезка.
, если вы рисуете две линии друг над другом, они должны сделать X, где каждый угол равен 90 градусам.
вычислить пересечение двух линий
вычислить расстояние между точкой пересечения и вашей новой точкой.Если оно больше некоторого допустимого значения, новая точка находится слишком далеко.
это выглядит как беспорядок, но, надеюсь, это должно сработать.