【问题标题】:find the minimum and maximum distance between 2 rectangles of any dimension找到任意维度的 2 个矩形之间的最小和最大距离
【发布时间】:2017-03-30 23:19:30
【问题描述】:

我有一个 Rectangle 类,它代表一个 d 维度矩形,每个维度都有 2*d 个数字。对于每个维度,我都有一个下限和上限。 Dimensionality 存储矩形的维数,对于下限和上限,我使用双精度数组。

我想创建 2 个方法,它们将它们作为输入的另一个具有相同维度的矩形对象,并返回矩形之间的最小和最大距离,我试图使用每个投影的最小/最大距离来做到这一点轴。我还有一个创建投影的方法。

//returns 2 position array
    public double[] project(int x)
    {
        //x is the selected dimension
        double proj[] = new double[2];
        proj[0] = this.lb[x];
        proj[1] = this.ub[x];
        return proj;
    }

你可以在第三组形状上更清楚地看到我想要做什么

https://s15.postimg.org/l8aijyl1n/imageedit_2_6689786765.jpg

【问题讨论】:

  • 为什么要计算投影的距离?它对您有什么帮助?

标签: java geometry


【解决方案1】:
  1. 求矩形的相互方向(作为中心之间向量的方向,得到center.x和center.y差异的符号就足够了)

  2. 根据方向象限,获取从第一个矩形的选定边缘到第二个矩形的选定边缘的距离。使用这些距离的符号,找到极值距离:

对于图片上的情况(第四象限的方向),必须检查从第一个矩形的右下角到第二个矩形的左和上边缘的距离,以及从第二个矩形的左上角到第一个的右边缘和下边缘。

 min_dx = rect2.left - rect1.right
 min_dy = rect2.top - rect.bottom
 if both values > 0 (++ case)
    min_dist = sqrt(min_dx^2 + min_dy^2) //corner-corner case

 +- case
   min_dist = min_dx
 -+ case
   min_dist = min_dy
 -- case
    min_dist = 0

似乎相同的方法可用于更高的维度。例数过多,选择中心-中心方向矢量分量符号对应的索引进行检查是值得的

【讨论】:

  • 是的,这就是我想出的二维矩形,那么 d 维矩形呢?对此有何想法?
  • 添加了一些想法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-17
  • 2015-12-22
  • 2011-03-03
  • 1970-01-01
  • 2014-01-21
  • 2017-08-30
相关资源
最近更新 更多