我试图在 SVG 绘图的所有元素中找到与给定元素欧几里得距离最近的元素。
目前,我对如何测量距离并不挑剔 - 无论是在边界框、质心还是其他任何东西之间。
除了计算每对元素之间的距离然后排序之外,还有什么办法吗?
最佳答案
不需要计算每对元素之间的距离,也不需要排序。您只需遍历所有元素并跟踪最小距离/元素对:
function closest( elements, toElement ){
var closestDistance=Infinity, closestElement;
for (var i=elements.length;i--;){
var fromElement = elements[i];
if (fromElement==toElement) continue;
var distance = distanceBetween(toElement,fromElement);
if (distance<closestDistance){
closestElement = fromElement;
closestDistance = distance;
}
}
return closestElement;
}
如果您经常这样做并且如果您已经测试了上面的简单解决方案以证明它太慢,那么请查看space partitioning或另一种对您的位置进行哈希处理以加快查找速度的方法。
关于javascript - 如何找到 SVG 中最接近的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15655236/