哪个空间搜索算法有助于查询最近的相邻矩形..对于给定矩形..在所有4个方向(即上,左,下,右)。
1:距离从矩形的一边正交到另一边的另一边。
2:矩形实际上代表表单上的GUI组件。
答案 0 :(得分:0)
在java中执行OOP样式,假设轴从左下角开始并且增加:
class Displacement
{
float top, bottom, left, right;
Rectangle r;
Displacement(Rectangle r)
{
this.r = r;
top = Math.max(r.y1, r.y2);
bottom = Math.min(r.y1, r.y2);
left = Math.min(r.x1, r.x2);
right = Math.max(r.x1, r.x2);
}
float minDistance(Displacement d)
{
float min = 10000.0f;
if (Math.abs(top - d.bottom) < min)
min = Math.abs(top - d.bottom);
if (Math.abs(bottom - d.top) < min)
min = Math.abs(bottom - d.top;
if (Math.abs(left - d.right) < min)
min = Math.abs(left - d.right);
if (Math.abs(right - d.left) < min)
min = Math.abs(right - d.left);
return min;
}
}
所以现在你有一个用矩形实例化的对象计算矩形的最小和最大跨度,这个Displacement
对象能够通过{{1}找到与另一个Displacement
的最小距离}}
现在你可以轻松做到这样的事情:
minDistance(...)
我用Java编写它只是为了给出一个简单的例子,但每种语言的方法都是一样的。
您可以通过分割计算不同方向上的距离的方式,以不同的方式轻松处理每个方向,这样您就可以完成我在前一个片段中所做的相同工作,但是为每个轴进行了分割。