Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Misha_prog
0 / 0 / 0
Регистрация: 15.04.2013
Сообщений: 184
#1

Написать класс "прямоугольник" с методом, который проверяет пересечение с другим прямоугольником - C++

30.03.2014, 11:17. Просмотров 247. Ответов 0
Метки нет (Все метки)

Всем Привет!!! Пытаюсь решить задачку второй день ничего не выходит, полазил по нету много всего нашел , но ничего на подошло , помогите пожалуйста ! Вообщем есть задача , нужно написать класс прямоугольника и там должен быть метод ,который проверяет на пересечение и возвращает true если пересекаются или false если не пересекаются . и если пересекаются то прямоугольник нужно сделать , как бы сказать то получше, прямогуольником который получается при пересечении двух прямоугольников.
вообщем вот что у меня получилось
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
bool CRectangle::IsOverLap(CPoints atop1, CPoints abuttom1, CPoints atop2, CPoints abuttom2)
{
    if ((atop1.GetX() <= atop2.GetX() && abuttom2.GetX() <= abuttom1.GetX()) &&(atop1.GetY() >= atop2.GetY() && abuttom2.GetY() >= abuttom1.GetY()))
    {
        m_leftTop.SetY(min(atop1.GetY() , atop2.GetY()));
        m_leftTop.SetX(max( atop1.GetX(), atop2.GetX()));
        std::cout <<min(atop1.GetY() , atop2.GetY()) << std::endl;
        std::cout << max( atop1.GetX(), atop2.GetX()) << std::endl;
        std::cout << max(abuttom1.GetY(), abuttom2.GetY()) << std::endl;
        std::cout << min(abuttom1.GetX(), abuttom1.GetX()) << std::endl;
        m_rightBottom.SetY(max(abuttom1.GetY(), abuttom2.GetY()));
        m_rightBottom.SetX(min(abuttom1.GetX(), abuttom1.GetX()));
        return true;
    } 
    else if ((atop2.GetX() <= atop1.GetX() && abuttom1.GetX() <= abuttom2.GetX()) &&(atop2.GetY() >= atop1.GetY() && abuttom1.GetY() >= abuttom2.GetY()))
    {
        m_leftTop.SetY(min(atop1.GetY() , atop2.GetY()));
        m_leftTop.SetX(max( atop1.GetX(), atop2.GetX()));
        std::cout <<min(atop1.GetY() , atop2.GetY()) << std::endl;
        std::cout << max( atop1.GetX(), atop2.GetX()) << std::endl;
        std::cout << max(abuttom1.GetY(), abuttom2.GetY()) << std::endl;
        std::cout << min(abuttom1.GetX(), abuttom1.GetX()) << std::endl;
        m_rightBottom.SetY(max(abuttom1.GetY(), abuttom2.GetY()));
        m_rightBottom.SetX(min(abuttom1.GetX(), abuttom1.GetX()));
        return true;
    }
    else
    {
        return false;
    }
}
 
bool CRectangle::intersect(CRectangle const & other)
{
    CPoints topPoint1;
    CPoints bottomPoint1;
    CPoints topPoint2;
    CPoints bottomPoint2;
    topPoint1.SetX(m_leftTop.GetX());
    topPoint1.SetY(m_leftTop.GetY());
    bottomPoint1.SetX(m_leftTop.GetX());
    bottomPoint1.SetY(m_leftTop.GetY());
    topPoint2.SetX(other.GetLeftSide());
    topPoint2.SetY(other.GetTopSide());
    bottomPoint2.SetX(other.GetRightSide());
    bottomPoint2.SetY(other.GetBottomSide());
    IsOverLap(topPoint1, bottomPoint1, topPoint2, bottomPoint2);
    if (IsOverLap(topPoint1, bottomPoint1, topPoint2, bottomPoint2)) 
    {
        return true;
    }
    else
    {
        m_rightBottom.SetX(m_leftTop.GetX());
        m_rightBottom.SetY(m_leftTop.GetY());
        return false;
    }
}
Всем спасибо за внимание!!!!

Добавлено через 2 часа 16 минут
да, ещё забыл написать что стороны прямоугольников параллельны осям x и y
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2014, 11:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Написать класс "прямоугольник" с методом, который проверяет пересечение с другим прямоугольником (C++):

Базовый класс "многоугольник" и производные классы "треугольник" и "прямоугольник" - C++
Не могу понять как реализовать данное задание. Создать 1 базовый класс и несколько производных.Все небольшие ф-ии сделать встроенными...

Создать класс "прямоугольник" и перегрузить операцию отношения "равно" - C++
Помогите решить задачу: Создать класс &quot;прямоугольник&quot; и перегрузить операцию отношения равно (==). Заранее спасибо!

Разработать класс "Массив больших чисел", который состоит из объектов класса "Большие целые числа". Найти сумму элементов массива. - C++
Разработать класс &quot;Массив больших чисел&quot;, который состоит из объектов класса &quot;Большие целые числа&quot;. Найти сумму элементов массива. ...

Класс "Прямоугольник" с олным набором функционала (расчёт площади, периметра и т.д.) - C++
разработать класс для прямоугольника чтоб считал площадь периметр и тд всё что можно...чтобы присутствовал конструктор диструктор,функции...

Написать код шифрования методом "Змеиный" и "Спиральный" - C++
весь интернет перерыл, не могу найти ничего нормального, если кто может или знает напишите хоть ссылки, срочно нужно

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления" - C++
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс &quot;вентилятор&quot; содержащий в себе классы:...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2014, 11:17
Привет! Вот еще темы с ответами:

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания" - C++
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько лет книге и количество дней прошедших...

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс" - C++
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об издании, а также определить является ли данное...

Описать класс "множество", позволяющий выполнять основные операции - добавления и удаление элемента, пересечение, множеств, объединение и разность мно - C++
Люди помогите написать программу, очень нужно!!! Буду очень благодарный........ 1. Описать класс &quot;множество&quot;, позволяющий выполнять...

Реализовать класс "Прямоугольник" - C++
Класс &quot;Прямоугольник&quot; с данными верхняя левая и правая нижняя точка Как можно более полно описывайте суть проблемы или вопроса, что...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru