Я работаю над поиском максимального прямоугольника перекрытия.
Я пытался использовать следующие строки кода, но он возвращается с тем, что этот прямоугольник перекрывается другим или нет
public boolean isOverlapping(Rect r1, Rect r2) {
if (r1.top < r2.top || r1.left > r2.left) {
return false;
}
if (r1.width() < r2.width() || r1.height() > r2.height()) {
return false;
}
return true;
}
Я ожидаю, что прямоугольник 3 больше всего перекрывается с данным прямоугольником. Не список или количество прямоугольников, которые перекрываются с данным прямоугольником.
уже проверил то же самое, но не могу найти никакого полезного метода @pskink
так что найди intersect
уже сделано с этим public static boolean isCollisionDetected(Rect v1, Rect v2) { return Rect.intersects(v1, v2); }, но он не возвращает ожидаемый результат
вы читали Rect#intersect документацию? если да, то что непонятно?
он вернет только то, что прямоугольник 2 перекрывается с прямоугольником 1 или нет, и в моем случае у меня есть список прямоугольников, поэтому он вернет все перекрывающиеся прямоугольники, но мне нужен только максимальный перекрывающийся прямоугольник
поэтому вам нужно перебрать свой список и найти максимум
Я просто застрял в поиске максимума из этого списка
выложи свой код тогда




Немного псевдокода для начала:
for each rect in Rectangle list
overlap = compuateOverlap(rect, givenRect)
Другими словами: на самом деле относительно легко определить вычислять область перекрытия для двух прямоугольников. Просто сделайте это, и сравните результаты, и выделите максимум.
Если вам нужны дополнительные рекомендации по вычислению этого перекрытия, посмотрите этот отвечать для вдохновения.
Или здесь, там вы найдете даже точную формулу для вычисления площади перекрытия двух прямоугольников!
@DharmeshPrajapati Спасибо за возвращение. И, пожалуйста, рассмотрите возможность удаления ненужных комментариев, чтобы будущие читатели могли сосредоточиться на техническом содержании ;-)
см.
android.graphics.Rectдокументацию