我有一个用户输入的坐标列表,如何计算尽可能接近所有坐标的点?
I have a list of user-inputted coordinates, how do i calculate the point that is as close as possible to all the coordinates?
我以前使用下面的代码计算质心,但是当有很多点彼此靠近时,质心被拉向那个方向,使得坐标到计算点的距离不那么相等。如何计算所有坐标到中点距离最短的坐标?
$.each( routeStart, function(i, routeCoords){
centroidx += parseFloat(routeCoords[0]);
centroidy += parseFloat(routeCoords[1]);
});
endpoint = ol.proj.fromLonLat([(centroidx / routeStart.length), (centroidy / routeStart.length)])
您正在求给定分数的平均值。相反,我认为您正在寻找的是所有绝对最大值和最小值的平均值。
例如:
var points = [
{ x: 6, y: 1},
{ x: 3, y: 4},
{ x: 7, y: 8},
{ x: -4, y:-10},
{ x: -5, y:-11},
{ x: -5, y:-10}
];
var maxX, minX, maxY, minY;
points.forEach(point => {
if(maxX === undefined || maxX < point.x) {
maxX = point.x
}
if(minX === undefined || minX > point.x) {
minX = point.x
}
if(maxY === undefined || maxY < point.y) {
maxY = point.y
}
if(minY === undefined || minY > point.y) {
minY = point.y
}
});
var centerPoint = {
x: ((maxX + minX) / 2),
y: ((maxY + minY) / 2)
};
console.log("Center point: ", centerPoint);
要对此进行测试,您可以 运行 上面的代码,然后将以下内容添加到点列表中。这不应该改变中心点。
{ x: -5, y:-10},
{ x: -5, y:-10},
{ x: -5, y:-10},
我以前使用下面的代码计算质心,但是当有很多点彼此靠近时,质心被拉向那个方向,使得坐标到计算点的距离不那么相等。如何计算所有坐标到中点距离最短的坐标?
$.each( routeStart, function(i, routeCoords){
centroidx += parseFloat(routeCoords[0]);
centroidy += parseFloat(routeCoords[1]);
});
endpoint = ol.proj.fromLonLat([(centroidx / routeStart.length), (centroidy / routeStart.length)])
您正在求给定分数的平均值。相反,我认为您正在寻找的是所有绝对最大值和最小值的平均值。
例如:
var points = [
{ x: 6, y: 1},
{ x: 3, y: 4},
{ x: 7, y: 8},
{ x: -4, y:-10},
{ x: -5, y:-11},
{ x: -5, y:-10}
];
var maxX, minX, maxY, minY;
points.forEach(point => {
if(maxX === undefined || maxX < point.x) {
maxX = point.x
}
if(minX === undefined || minX > point.x) {
minX = point.x
}
if(maxY === undefined || maxY < point.y) {
maxY = point.y
}
if(minY === undefined || minY > point.y) {
minY = point.y
}
});
var centerPoint = {
x: ((maxX + minX) / 2),
y: ((maxY + minY) / 2)
};
console.log("Center point: ", centerPoint);
要对此进行测试,您可以 运行 上面的代码,然后将以下内容添加到点列表中。这不应该改变中心点。
{ x: -5, y:-10},
{ x: -5, y:-10},
{ x: -5, y:-10},