Вот идея.Вместо создания каждого прямоугольника с помощью (x, y, width, height)
, создайте для него экземпляр с помощью (x1, y1, x2, y2)
или, по крайней мере, сделайте так, чтобы он интерпретировал эти значения с учетом ширины и высоты.
Таким образом, вы можете проверить, какие прямоугольники имеют аналогичный x
или y
и убедитесь, что соответствующий прямоугольник имеет такое же вторичное значение.
Пример:
Указанные вами прямоугольники имеют следующие значения:
- Квадрат 1: [0, 0, 8, 3]
- Квадрат 3: [0, 4, 8, 6]
- Квадрат 4: [9, 0, 10,4]
Сначала мы сравним Square 1
с Square 3
(без столкновений):
- Сравните значения x
- [0, 8] до [0, 8] Они точно такие же, поэтому пересечения нет.
- Сравните значения y
- [0, 4] с [3, 6] Ни одно из этих чисел не похоже, поэтому они не имеют значения
Далее мы сравним Square 3
с Square 4
(столкновение):
- Сравните значения x
- [0, 8] с [9, 10]Ни одно из этих чисел не схоже, поэтому они не имеют отношения
- Сравните значения y
- [4, 6] с [0, 4] Прямоугольники имеютчисло 4 общее, но 0! = 6, следовательно, есть столкновение
К тому же мы знаем, что столкновение произойдет, поэтому метод закончится, нодавайте оценим Square 1
и Square 4
для некоторой дополнительной ясности.
- Сравните значения x
- [0, 8] с [9, 10] Ни одно из этих чисел не похожетак что они не имеют значения
- Сравните значения y
- [0, 3] с [0, 4]. Прямоугольники имеют общее число 0,но 3! = 4, поэтому есть столкновение
Дайте мне знать, если вам понадобятся какие-либо дополнительные детали:)