Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/120: Рейтинг темы: голосов - 120, средняя оценка - 4.68
24 / 6 / 3
Регистрация: 06.12.2015
Сообщений: 319
1

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

11.02.2017, 21:16. Показов 22901. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Заранее извиняюсь за казалось бы абсурдный вопрос, но к сожалению ничего вменяемого нагуглить для Шарпа не смог. Два прямоугольника, стороны параллельны осям координат. Есть координаты верхней левой вершины прямоугольника, есть ширина, высота, есть свойства Bottom = Top + Height, есть свойство Right = Left + Width. Библиотечные ф-ии использовать нельзя кроме Math.Min() и Math.Max(). Попытался сам все расчертить. Вроде проанализировал для одного случая выдает правильно, для других случаев чеккер выдает ошибку. Заранее спасибо если поможете.
Вот мой код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
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;
            
        }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.02.2017, 21:16
Ответы с готовыми решениями:

Задачка на нахождение пересечения двух функций, заданных линейно
Помогите решить задачку. Нужно найти точку пересечения двух функций, заданных линейно. На вход...

Нахождение точки пересечения двух отрезков заданных координатами
Есть ли у кого решение на нахождение точки пересечения двух отрезков заданных координатами...

Найти значение площади пересечения всех прямоугольников
Дано N прямоугольников со сторонами параллельными осям координат. Каждый прямоугольник может быть...

Помогите составить программу, площади пересечения прямоугольников.
Даны 2 прямоугольника. Каждый из них задан 2 точками. верхней левой и правой нижней. если они...

5
907 / 664 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
11.02.2017, 21:28 2
Mnemonik39,
1) Найдите длину пересечения отрезков [r1.Left; r1.Right] и [r2.Left; r2.Right]
2) Найдите длину пересечения отрезков [r1.Top; r1.Bottom] и [r2.Top; r2.Bottom]
3) Перемножьте полученные результаты
0
84 / 85 / 48
Регистрация: 12.10.2013
Сообщений: 1,079
11.02.2017, 22:22 3
Да,простая геометрия.


Добавлено через 2 минуты
Было бы интереснее оформить всё это графически и динамически!!! Ч.р. Form1!
0
24 / 6 / 3
Регистрация: 06.12.2015
Сообщений: 319
11.02.2017, 22:43  [ТС] 4
Все так и есть. ВОт 50 разных случаев в задании. И надо, чтобы один метод элегантно без нагромождений возвращал значение которое бы и считало площадь во всех случаях
0
907 / 664 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
11.02.2017, 22:57 5
Лучший ответ Сообщение было отмечено Mnemonik39 как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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);
}
Добавлено через 4 минуты

Не по теме:

Цитата Сообщение от Mnemonik39 Посмотреть сообщение
ВОт 50 разных случаев в задании.
Было бы 100 - было бы в 2 раза сложнее

1
24 / 6 / 3
Регистрация: 06.12.2015
Сообщений: 319
11.02.2017, 23:03  [ТС] 6
Большое спасибо...
0
11.02.2017, 23:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.02.2017, 23:03
Помогаю со студенческими работами здесь

Известны длины сторон двух прямоугольников. Вычислить площади прямоугольников и сравнить их. Определить, являются ли прямоугольники квадратами...
Привет , ребята нужна помощь Разместите на форме Элементы управления для решения задачи Известны...

Нахождение площадей пересечения случайных прямоугольников
Предположим у меня есть некоторое количество прямоугольников (точек x;y которые образуют...

Нахождение площади пересечения колец
program project1; var x1,x2,y1,y2,q1,q2,r1,r2,s1,s2,f1,f2,d,l,s:real; begin ...

Нахождение площади под графиком методом прямоугольников
Есть график cos'инуса. Требуется найти две площади под ним. Первая-это практическая (методом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru