A+(B-A, P-A)/|B-A|^2 * (B-A)
(X, Y) - это скалярное произведение двуз веткоров. B-A - вектор от A до B, что есть просто разность координат точек. |X|^2 - длина вектора X в квадрате.Point Subtract(Point, Point)
, double ScalarMult(Point, Point)
и Point Multiply(double, Point)
. Для подсчета квадрата длины вектора можно просто перемножить его на себя скалярно. Тогда формулу можно прямо так и записать в коде.else break;
? Как только вы встретите первое ребро, которое не лучше текущего минимума, вы выходите из цикла.