Я хочу рассчитать расстояние от точки, заданной двумя точками.Геометрия - Расстояние до точки отсчета от линии
Я использую яваскрипт и вот что я придумал, используя Википедию: https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line
function distance(point1, point2, x0, y0) {
return ((Math.abs((point2.y - point1.y) * x0 -
(point2.x - point1.x) * y0 +
point2.x * point1.y -
point2.y * point1.x))/
(Math.pow((Math.pow(point2.y - point1.y, 2) +
Math.pow(point2.x - point1.x, 2)),
0.5)));
}
Проблема заключается в том, что он, кажется, не точны, так как если я ввожу эти параметры:
alert(distance({ x: 1, y: 1 }, { x: 2, y: 2 }, 1, 0));
Он возвращает 1/sqrt(2)
вместо возврата 1
(который является расстоянием между точкой (1, 0)
и линией в точке (1, 1)
EDIT: Я понимаю, что код выше не делает того, что я хотел. Он caulcated от точки к линии, представленной на 2 точки, но линия INFINITE (я хотел что-то еще, как вектор, который имеет 2 оконечные)
Я нашел ответ here
Результат правильный. Расстояние между точкой и линией - это кратчайшее расстояние от точки до линии или другими словами, это расстояние на перпендикулярной линии до точки. – Zimmi
javascript в порядке, вашей математике нет :-) Ближайшая точка из (1,0) на линии через (1,1) и (2,2) равна (0,5,0,5). – m69
Возможно, это поможет построить линию, точку и перпендикулярно от точки к линии. –