javascript - 如何找到 SVG 中最接近的元素?

标签 javascript svg geometry

我试图在 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/

相关文章:

opengl - 如何用OPENGL库绘制球体?

javascript - 如何在没有任何标签的情况下更改其复选框旁边的文本?

javascript - 在 D3 中创建嵌套后,如何将比例重置为新值?

algorithm - 拼图 : Find largest rectangle (maximal rectangle problem)

javascript - 将 SVG 多边形点转换为路径?

css - SVG 比例变换具有运动

algorithm - 判断一个点是否在矩形内

javascript - 守夜人 : Using custom commands to iterate over all select tags

javascript - 无法在 jQuery mobile 中选择具有特定值的选项

javascript - 如何在 JavaScript 中使用两点坐标来旋转 div?