Пересечение границ - PullRequest
1 голос
/ 10 марта 2011

Учитывая структуру 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 находится в B и сколько точек B находится вО, но мне нужно, чтобы этот тест был как можно быстрее, и, возможно, есть лучший способ сделать это.

Большое спасибо!

1 Ответ

3 голосов
/ 10 марта 2011

Попробуйте сначала в 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 пересекаются)

(я думаю, что это охватывает.)

...