Нахождение площади пересечения двух прямоугольников - C#

Узнай цену своей работы

Формулировка задачи:

Заранее извиняюсь за казалось бы абсурдный вопрос, но к сожалению ничего вменяемого нагуглить для Шарпа не смог. Два прямоугольника, стороны параллельны осям координат. Есть координаты верхней левой вершины прямоугольника, есть ширина, высота, есть свойства Bottom = Top + Height, есть свойство Right = Left + Width. Библиотечные ф-ии использовать нельзя кроме Math.Min() и Math.Max(). Попытался сам все расчертить. Вроде проанализировал для одного случая выдает правильно, для других случаев чеккер выдает ошибку. Заранее спасибо если поможете. Вот мой код:
public static int IntersectionSquare(Rectangle r1, Rectangle r2)
        {
            int square;
            if (AreIntersected(r1, r2))// метод проверяющий пересекаются или нет прямоугольники
                if (r1.Right >= r2.Right || r1.Bottom >= r2.Bottom)
                    return square = (r1.Right + r2.Width - r2.Right) * (r1.Bottom + r2.Height - r2.Bottom);
            else if(r1.Right <= r2.Right || r1.Bottom <= r2.Bottom)
                    return square = (r1.Right + r2.Width - r1.Right) * (r1.Bottom + r2.Height - r1.Bottom);
 
            return 0;
            
        }

Решение задачи: «Нахождение площади пересечения двух прямоугольников»

textual
Листинг программы
int GetRectanglesIntersectionSquare(Rectangle a, Rectangle b)
{
    int xIntersection = GetSegmentsIntersectionLength(a.Left, a.Right, b.Left, b.Right);
    int yIntersection = GetSegmentsIntersectionLength(a.Top, a.Bottom, b.Top, b.Bottom);
    
    return xIntersection * yIntersection;
}
 
int GetSegmentsIntersectionLength(int aLeft, int aRight, int bLeft, int bRight)
{
    int left = Math.Max(aLeft, bLeft);
    int right = Math.Min(aRight, bRight);
    
    return Math.Max(right - left, 0);
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5
Похожие ответы