使用Javascript有效地从坐标数组中获得距离最短的一对坐标
Efficient getting a pair of coordinates with the shortest distance from array of coordinates using Javascript
我有几个x-y坐标存储在两个数组中,一个用于源对象,一个用于目标:
var sourcePoints = [
{
x: 20,
y: 11
}, {
...
}, {
x: 10
y: 6
}
];
var targetPoints = [
{
x: 10,
y: 71
}, {
...
}, {
x: 22
y: 8
}
];
现在我想只从源数组中选择一些坐标,从目标数组中选择一些点(根据情况有些组合没有任何意义),并计算它们之间的距离。
coordinatePairs = [
{
[1,4] : computeDistance(sourcePoints[1],targetPoints[4])
},{
...
}
];
现在我想知道如何有效地得到这些坐标,用最短的距离。我需要将这些坐标对存储在数组中吗?
如果您只对距离最短的两个点感兴趣,您可以使用这样的内容:
var minDist2 = Infinity;
var res = [];
for (var i = 0, max_i = sourcePoints.length; i < max_i; i++) {
var sourcePoint = sourcePoints[i];
for (var k = 0, max_k = targetPoints.length; k < max_k; k++) {
var targetPoint = targetPoints[k];
var dx = targetPoint.x - sourcePoint.x;
var dy = targetPoint.y - sourcePoint.y;
var dist2 = dx * dx + dy * dy;
if (minDist2 > dist2) {
minDist2 = dist2;
res = [i, k];
}
}
}
注意,这不会计算点的实际距离,而是计算距离的平方,这样你就少了一个操作(平方根),这可能会加快一些速度。
相关文章:
- EaseJS拖放;放下(动画CC)电影剪辑的鼠标坐标
- 如何在d3.js中返回路径的y坐标
- 在谷歌地图上获取事件的x,y坐标
- 通过ajax将坐标传递到php服务器端,并在处理后检索到javascript
- 当带有渲染器的DOM元素不在屏幕顶部时,移动了场景的坐标
- 如何在JS Leatflet绘图插件中获取圆的坐标
- 点击(右键点击)使用传单地图库获取图像覆盖的像素坐标
- 坐标之间的音差地理位置距离
- 将 GPS 坐标转换为距离,并以十进制度为单位将距离转换为半径
- javascript中两个画布坐标之间的距离
- AngularJS获取多个坐标之间的距离
- 使用数组计算坐标之间的距离,并设置Y轴和比例- D3.js
- 加载坐标时的距离误差
- 使用Javascript有效地从坐标数组中获得距离最短的一对坐标
- 在arcgis中通过当前点、角度和距离获得新的点坐标
- 根据提示存储坐标并计算距离
- 如何在驱动模式下使用javascript查找两个坐标之间的距离
- 在坐标数组上循环并计算距离javascript
- 谷歌地图v3neneneba API-计算边界给定的中心坐标和距离
- 计算距离一定米的两个坐标之间的经纬度