算法..在所有4个方向上找到最近的相邻矩形

时间:2010-03-09 16:06:19

标签: algorithm spatial

哪个空间搜索算法有助于查询最近的相邻矩形..对于给定矩形..在所有4个方向(即上,左,下,右)。

1:距离从矩形的一边正交到另一边的另一边。

2:矩形实际上代表表单上的GUI组件。

1 个答案:

答案 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编写它只是为了给出一个简单的例子,但每种语言的方法都是一样的。

您可以通过分割计算不同方向上的距离的方式,以不同的方式轻松处理每个方向,这样您就可以完成我在前一个片段中所做的相同工作,但是为每个轴进行了分割。

相关问题