1

给定这样的Bounds结构:

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

我试图找出两个Bounds AB如何相交。可能的结果是:

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

我的第一个也是天真的尝试是测试 B 中有多少点 A 和 A 中有多少点 B,但我需要这个测试尽可能快,并且可能有更好的方法来做到这一点.

非常感谢 !

4

1 回答 1

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 相交)

(我认为这涵盖了它。)

于 2011-03-10T12:47:46.897 回答