2015-07-17 6 views
1

Я недавно занялся программированием и искал некоторую помощь.Идентификация геометрических отношений между двумя прямоугольниками

Для алгоритма, который я пытаюсь реализовать, существуют две прямоугольные сетки, каждая ячейка содержит объект. Вы можете думать об этом как о двумерном массиве с координатой x-y, назначенной по его происхождению.

Учитывая два целых числа «m» и «n», я собираюсь отметить n ячеек в одной сетке и (mn) ячейках в другой сетке, так что обозначенная область в одной сетке является ближайшим местоположением для отмеченной области в другой сетке (наоборот).

Например, скажем сетка существует между координатами (x1, y1) и (х2, у2) и Энергосистемой B существует между (a1, b1) и (а2, b2) (x1 < x2, y1 < y2 , и т.д). Если x2 < a1 и y2 < b1 (то есть сетка B находится в верхней правой части сетки A), будет отмечен верхний правый угол сетки A и нижний левый угол сетки B.

Я попытался сконструировать это с помощью переключающих шкафов, но, похоже, слишком много случаев для рассмотрения. Если вы знаете какие-либо лучшие способы сделать это, я бы очень признателен, если вы можете мне помочь.

Если мой вопрос был слишком расплывчато, чтобы понять, не стесняйтесь указывать на них :)

ответ

0

Я не уверен, если я понимаю, но я думаю, что вы имеете в виду обнаружение столкновений. Если я прав, что бы выглядеть примерно так, для квадрата:

(x + xYWidth >= a && x <= a + aBWidth) && (y + xYWidth >= b && y <= b + aBWidth) 

Для прямоугольников: Determine if two rectangles overlap each other?

+0

У меня трудно понять вашу линию. Это не обязательно об обнаружении столкновений, вместо этого найдите две ближайшие области в двух прямоугольниках. Однако может возникнуть вероятность того, что два прямоугольника столкнулись друг с другом. – Caladbolgll

+0

Я нашел решение: D занял много времени, но решение было намного проще, чем это. Спасибо хоть :) – Caladbolgll