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

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

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

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

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

textual
Листинг программы
  1. int GetRectanglesIntersectionSquare(Rectangle a, Rectangle b)
  2. {
  3.     int xIntersection = GetSegmentsIntersectionLength(a.Left, a.Right, b.Left, b.Right);
  4.     int yIntersection = GetSegmentsIntersectionLength(a.Top, a.Bottom, b.Top, b.Bottom);
  5.    
  6.     return xIntersection * yIntersection;
  7. }
  8.  
  9. int GetSegmentsIntersectionLength(int aLeft, int aRight, int bLeft, int bRight)
  10. {
  11.     int left = Math.Max(aLeft, bLeft);
  12.     int right = Math.Min(aRight, bRight);
  13.    
  14.     return Math.Max(right - left, 0);
  15. }

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


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

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

5   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы