4
我正在嘗試在SVG繪圖上的所有元素中找到最接近給定元素的歐幾里得距離。如何找到SVG中最接近的元素?
現在,我不挑剔如何測量距離 - 無論是邊界框,質心還是其他任何東西。
這是一種方式,除了計算每對元素之間的距離,然後排序?
我正在嘗試在SVG繪圖上的所有元素中找到最接近給定元素的歐幾里得距離。如何找到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或其他方法來散列您的位置以便快速查找。