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

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

Войти
Регистрация
Восстановить пароль
 
Ryk
0 / 0 / 0
Регистрация: 19.03.2012
Сообщений: 20
Завершенные тесты: 1
#1

Построить прямоугольник, являющийся пересечением двух других - C++

22.01.2013, 15:30. Просмотров 429. Ответов 0
Метки нет (Все метки)

Есть класс:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class rectangle
{   
    public:
        void OutRectangle();
        void SetRectangle();
        void MoveRectangle();
        void ChangeRectangle();
        void TwoRectInOne(rectangle rect1, rectangle rect2);
        void Intersection(rectangle rect1, rectangle rect2);
 
    private:
        int x,y,dlinax,dlinay;
};
И метод:
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
59
60
61
void rectangle::Intersection(rectangle rect1, rectangle rect2)
{
 
    if((rect1.x>rect2.x+rect2.dlinax)||(rect2.x>rect1.x+rect2.dlinax)||(rect1.y>rect2.y+rect2.dlinay)||(rect2.y>rect1.y+rect1.dlinay))
    {
        cout<<"Непересекаются"<<endl;
        return;
    }
    else cout<<"Пересекаются"<<endl;
/*
    int A1=rect1.y-rect1.y;
    int B1=rect1.x+rect1.dlinax-rect1.x;
    int C1=rect1.x*(rect1.y)-(rect1.x+rect1.dlinax)*rect1.y;
    cout<<A1<<endl;
    cout<<B1<<endl;
    cout<<C1<<endl;
    int A2=rect2.y-(rect2.y+rect2.dlinay);
    int B2=rect2.x-rect2.x;
    int C2=rect2.x*(rect2.y+rect2.dlinay)-(rect2.x)*rect2.y;
    cout<<A2<<endl;
    cout<<B2<<endl;
    cout<<C2<<endl;
    int X=-((C1*B2-C2*B1)/(A1*B2-A2*B1));
    int Y=-((A1*C2-A2*C1)/(A1*B2-A2*B1));
    cout<<"Точка пересечения: "<<X<<" , "<<Y<<endl;
*/
    int A1=rect1.y-rect1.y;
    int B1=rect1.x+rect1.dlinax-rect1.x;
    int C1=rect1.x*rect1.y-(rect1.x+rect1.dlinax)*rect1.y;
 
    int A2=rect1.y+rect1.dlinay-rect1.y+rect1.dlinay;
    int B2=rect1.x+rect1.dlinax-rect1.x;
    int C2=rect1.x*(rect1.y+rect1.dlinay)-(rect1.x+rect1.dlinax)*(rect1.y+rect1.dlinay);
 
    int A3=rect1.y-rect1.y+rect1.dlinay;
    int B3=rect1.x-rect1.x;
    int C3=rect1.x*(rect1.y+rect1.dlinay)-rect1.x*rect1.y;
 
    int A4=rect1.y-rect1.y+rect1.dlinay;
    int B4=rect1.x+rect1.dlinax-rect1.x+rect1.dlinax;
    int C4=(rect1.x+rect1.dlinax)*(rect1.y+rect1.dlinay)-(rect1.x+rect1.dlinax)*rect1.y;
    /////////////////////////////////////////////////////////////////////////////////////
    int A5=rect2.y-rect2.y;
    int B5=rect2.x+rect2.dlinax-rect2.x;
    int C5=rect2.x*rect2.y-(rect2.x+rect2.dlinax)*rect2.y;
 
    int A6=rect2.y+rect2.dlinay-rect2.y+rect2.dlinay;
    int B6=rect2.x+rect2.dlinax-rect2.x;
    int C6=rect2.x*(rect2.y+rect2.dlinay)-(rect2.x+rect2.dlinax)*(rect2.y+rect2.dlinay);
 
    int A7=rect2.y-rect2.y+rect2.dlinay;
    int B7=rect2.x-rect2.x;
    int C7=rect2.x*(rect2.y+rect2.dlinay)-rect2.x*rect2.y;
 
    int A8=rect2.y-rect2.y+rect2.dlinay;
    int B8=rect2.x+rect2.dlinax-rect2.x+rect2.dlinax;
    int C8=(rect2.x+rect2.dlinax)*(rect2.y+rect2.dlinay)-(rect2.x+rect2.dlinax)*rect2.y;
    ////////////////////////////////////////////////////////////
 
 
}
Для каждой из сторон прямоугольника нахожу коэффициенты уравнения прямой. Ax+By+C=0.
Через эти уравнения можно проверить пересекаются ли стороны, как наиболее эффективно получить точку начала прямоугольника и длины по х и по у?
Я не прошу, чтобы вы написали мне код, просто нужна идея, как правильнее сделать.
P.S. Прямоугольники параллельны осям координат.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.01.2013, 15:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Построить прямоугольник, являющийся пересечением двух других (C++):

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

Построить упорядоченный массив из двух других упорядоченных массивов - C++
построить упорядоченный массив a из элементов массива b и c. Массивы b и c предварительно упорядочены по возрастанию.

Построить прямоугольник по двум заданным точкам - C++
Построить прямоугольник по двум заданным точкам: левому верхнему и правому нижнему углам. Обе точки указываются с клавиатуры, а именно:...

Построить прямоугольник с центром в точке (xc, yc), высотой h и шириной w - C++
Ввести с клавиатуры натуральный числа xc,yc,h,w,x,y.Построить прямоугольник с центром в точке(xc,yc),высотой h и шириной w,а также отрезок...

Построить класс для описания плоской геометрической фигуры прямоугольник - C++
Построить класс для описания плоской геометрической фигуры прямоугольник. Предусмотреть методы для создания объектов и изменения.

Построить классы для описания плоских фигур:круг,квадрат,прямоугольник - C++
Построить классы для описания плоских фигур:круг,квадрат,прямоугольник.Включить методы для определения периметра и площади...

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

Определить, можно ли из отрезков, длины которых равны заданным числам, построить прямоугольник - C++
Заданы 4 вещественных числа. Определить, можно ли из отрезков, длины которых равны заданным числам, построить прямоугольник помогите...

Формировка третьего массива из двух других - C++
Привет всем. Пишу программу, формирующую третий массив из двух. И мне надо вывести массив на консоль. Я не знаю, как последний пункт...

Сформировать массив из двух других массивов - C++
помогите с задачкой пжл. у меня стоит программка codeblocks и devC++,поэтому мне очень сложно понять когда используют какие то непонятные...

Получить квадратную матрицу из двух других - C++
Здравствуйте, уважаемые программисты. Прошу у вас помощи с программой: Методические указания: 1. Ввод и вывод массива, а так же...


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

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

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