Если вы посмотрите на исходный код turf.js для расстояния от точки до линии , вы увидите, что он вычисляет плоские расстояния вдоль прямой линии , и это не то, что вы бы сделалиожидать в плоской геометрии.
Чтобы достичь того, что вы хотите, вы можете самостоятельно реализовать уравнение , что-то вроде
function pointToLineDistance(line, p0) {
var p1 = line[0],
p2 = line[1];
var x0 = p0[0], y0 = p0[1],
x1 = p1[0], y1 = p1[1],
x2 = p2[0], y2 = p2[1]
return Math.abs(
(y2 - y1) * x0
- (x2 - x1) * y0
+ x2 * y1
- y2 * x1
)
/
Math.sqrt(
(y2 - y1) * (y2 - y1)
+
(x2 - x1) * (x2 - x1)
);
}
console.log(
pointToLineDistance([[0, 0], [3, 4]], [3, 0]),
pointToLineDistance([[0, 0], [30, 40]], [30, 0]),
);
Или, если вы предпочитаете библиотеку, вам может помочь что-то вроде flatten.js :
let Flatten = require('flatten-js');
let {point, line} = Flatten;
let l = line(point(0, 0), point(3, 4));
let p = point(3, 0)
let d = p.distanceTo(l);
console.log(d[0]);