Уже есть правильные ответы, но я думаю, что было бы более полезно иметь формулу, которая дает расстояние от любой точки до указанной линии. Затем вы можете просто проверить, равен ли он нулю, или в пределах любого допустимого отклонения. Следующее должно работать независимо от особых случаев, таких как вертикальные линии (бесконечный градиент).
Расстояние точки X от линии AB равно
1009 *http://hypftier.de/dump/SO-6276361-Ben-1.png
, где A , B и X - трехмерные векторы положения трех точек (просто установите z = 0, если вы работают только в 2D) и x - векторное произведение. Это приходит к
1024 *http://hypftier.de/dump/SO-6276361-Ben-2.png
, где A = (a, b), B = (c, d) и X = (x, y). Затем, чтобы проверить, что точка на самом деле находится внутри отрезка, а не где-нибудь еще на бесконечной линии, вы можете использовать скалярные произведения: расстояние X вдоль линии от A до B is
1041 *http://hypftier.de/dump/SO-6276361-Ben-3.png
т.е. * * тысяча сорок-четырь
1046 *http://hypftier.de/dump/SO-6276361-Ben-4.png
и это должно быть между 0 и http://hypftier.de/dump/SO-6276361-Ben-5.png