Нахождение площади пересечения двух прямоугольников - 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); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д