界限交集

时间:2011-03-10 12:31:29

标签: algorithm 2d intersection bounds intersect

给定Bounds这样的结构:

struct Bounds {
  public double xMin;
  public double xMax;
  public double yMin;
  public double yMax;
}

我正在尝试找出两个Bounds A B 是如何相交的。可能的结果是:

  • A和B根本不相交
  • A和B相等
  • A完全包含B
  • B完全包含A
  • A和B相互交叉

我的第一个天真的尝试是测试A中A的多少点以及A中有多少个B点,但是我需要这个测试尽可能快,并且可能有更好的方法这样做。

非常感谢!

1 个答案:

答案 0 :(得分:3)

首先在 2D 1D中尝试。应该清楚如何为这五个可能的结果测试两个[x min ,x max ]个对象。然后对[y min ,y max ]执行相同的操作。然后结合两个结果:

  • (没有交集) x +(任何) y =(没有交集)
  • (等于) x +(某事) y =(某事)
  • (A包含B) x +(A包含B) y =(A包含B)
  • (A包含B) x +(A和B相交) y =(A和B相交)
  • (A包含B) x +(B包含A) y =(A和B相交)

(我认为这涵盖了它。)