Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
nedsi
2 / 2 / 0
Регистрация: 18.09.2013
Сообщений: 65
#1

Вызов функции проверки - C++

11.11.2013, 21:46. Просмотров 196. Ответов 3
Метки нет (Все метки)

Доброго времени суток!
2-ой день мучаюсь с задачей. Есть массив прямоугольников, вершины которых я считал с файла. Задача состоит в том, чтобы проверить пересекаются ли они. Сделал соответствующую функцию :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
bool Intersects(Rect Obj1, Rect Obj2)
{
    int ax,ay,ax1,ay1,bx,by,bx1,by1;
 
    ax = Obj1.ItsUpperLeftGetX();
    ay = Obj1.ItsUpperLeftGetY();
    ax1 = Obj1.ItsLowerRightGetX();
    ay1 = Obj1.ItsLowerRightGetY();
 
    bx = Obj2.ItsUpperLeftGetX();
    by = Obj2.ItsUpperLeftGetY();
    bx1 = Obj2.ItsLowerRightGetX();
    by1 = Obj2.ItsLowerRightGetY();
 
    if ((ay1>by) || (ay<by1) || (ax>bx1) || (ax1<bx)) return false; // условие что они не пересекаются 
    else return true;
}
Вызываю ее здесь:
C++
1
2
3
4
5
for (int i = 0; i<k; i++) // k  - количество элементов массива
        for (int j = 0; j<k; j++)
        {
            if (Intersects(MyRect[j],MyRect[j+1])) { MyRect[j].Draw(dc); MyRect[j+1].Draw(dc); }
        }
Рисует весь массив прямоугольников, хотя по идее должно только те, что пересекаются. В чем ошибка? Благодарю.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2013, 21:46     Вызов функции проверки
Посмотрите здесь:

Вызов родовой функции (нужно передать массив в качестве аргумента функции через указатель) - C++
#include &lt;iostream&gt; using namespace std; template &lt;class T1&gt; class mas { public: T1 n; T1 a; void input() ...

Рекурсивное значение функции проверки числа на простоту - C++
У меня вопрос будет больше теоретического характера.Программа проверяет простое число или нет,функция проверки числа имеет возвращаемое...

Найти баг в простой функции проверки правильности скобок - C++
Привет! Проходил онлайн тест, нужно было в очень ограниченное время без IDE (форма фиксирует активность, копипаста из IDE не прокатит)...

Вызов функции - C++
Привет всем. Вот такая структура кода: void Sailary() void SetShop() void SetMenu() void ResetData() int main()

Реализовать функции для проверки битового представления типа данных - C++
Для типа данных int Необходимо реализовать функции для: 1. Проверки битового представления типа данных. Функция должна возвращать...

Вызов неопрелелнной функции в QT - C++
Здравствуйте. Помогите, пожалуйста, с проблемой : не могу вызвать метод из QMap. mainwindiw.h: class MainWindow : public QMainWindow...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
RQdan
65 / 65 / 17
Регистрация: 26.10.2013
Сообщений: 198
11.11.2013, 22:29     Вызов функции проверки #2
nedsi, такая проверка точно не даст результат.

Честно говоря, и сам не знаю как бы лучше сделать. Единственное, что приходит на ум, так это проверять вхождение каждой вершины одного прямоугольника в другом:
C++
1
2
3
4
5
if(((ay<by)&&(ay1>by))&&((ax<bx)&&(ax2>bx))) return true; //проверка вхождения левой верхней вершины
if(((ay<by1)&&(ay1>by1))&&((ax<bx)&&(ax2>bx))) return true;// левой нижней вершины
if(((ay<by1)&&(ay1>by1))&&((ax<bx1)&&(ax2>bx1))) return true;//правой нижней вершины
if(((ay<by)&&(ay1>by))&&((ax<bx1)&&(ax2>bx1))) return true;//правой верхней вершины
return false;//если не сработал ни один if, то прямоугольники не накладываются
nedsi
2 / 2 / 0
Регистрация: 18.09.2013
Сообщений: 65
11.11.2013, 22:51  [ТС]     Вызов функции проверки #3
RQdan, Вы даже не представляете как выручили! Я 2 дня мучался с этой функцией! Удачи Вам и еще раз спасибо ОГРОМНОЕ!

Добавлено через 3 минуты
и да, там маленькая опечатка где ax2 -> ax1. Все прекрасно работает
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2013, 23:16     Вызов функции проверки
Еще ссылки по теме:

c++ for_each и вызов функции - C++
for(microbe &amp;i : microbes) { i.set_speed(diapozon_speed * rand() /RAND_MAX + min_speed ); // установка скорости ...

Вызов функции в ребенке - C++
Доброе время суток. Есть класс A и в нем есть функция void funcA(void). И есть каласс B : public A который унаследует A. Но когда я пишу в...

Вызов логической функции - C++
Есть функция check которая проверяет баланс скобок в строке. Проблема в том, что при вызове её из main`а программа крашится =( В чем...

Вызов массива в функции - C++
помогите пожалуйста. не получается вызвать массив подсчитанный в функции god. kol считает верно, и выводит в функции main. а массив &quot;а&quot;...


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

Или воспользуйтесь поиском по форуму:
RQdan
65 / 65 / 17
Регистрация: 26.10.2013
Сообщений: 198
11.11.2013, 23:16     Вызов функции проверки #4
nedsi, всегда пожалуйста
Yandex
Объявления
11.11.2013, 23:16     Вызов функции проверки
Ответ Создать тему
Опции темы

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