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

Координаты пересечения двух прямоугольников - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 37, средняя оценка - 4.81
Agent Smith
40 / 40 / 9
Регистрация: 24.11.2012
Сообщений: 200
14.02.2013, 15:38     Координаты пересечения двух прямоугольников #1
здравствуйте. сегодня наткнулся на такую задачу: определить координаты левого верхнего и правого нижнего углов общей части 2-х прямоугольников, которые задаются так же координатами левого верхнего и правого нижнего углов. стороны прямоугольников параллельны координатным осям. случаев получается чуть больше чем дофига и как их все учесть? написать нужно на с++. может есть уже готовый алгоритм(знаю что есть для площади, а для координат что-то не видел).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.02.2013, 15:38     Координаты пересечения двух прямоугольников
Посмотрите здесь:

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dimon_91
10 / 10 / 1
Регистрация: 06.05.2009
Сообщений: 34
15.02.2013, 11:38     Координаты пересечения двух прямоугольников #2
Попробуйте так:
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
62
63
64
65
66
67
68
69
70
71
//пересекающиеся прямоугольники
#include <iostream>
 
struct point
{
    int x,y;
}
struct rectangle
{
    point lt; //left top
    point rb; //right bottom
}
 
int min(int a, int b);
int max(int a, int b);
 
int main()
{
    setlocale(NULL,"rus");
    rectangle a,b,c;
    cout<<"Введите координаты первого прямоугольника:"<<endl;
    cout<<"верхний левый угол:\tx = ";
    cin>>a.lt.x;
    cout<<"\ty = ";
    cin>>a.lt.y;
    cout<<endl<<"правый нижний угол:\tx = ";
    cin>>a.rb.x;
    cout<<"\ty = ";
    cin>>a.rb.y;
    cout<<endl<<"Введите координаты второго прямоугольника:"<<endl;
    cout<<"верхний левый угол:\tx = ";
    cin>>b.lt.x;
    cout<<"\ty = ";
    cin>>b.lt.y;
    cout<<endl<<"правый нижний угол:\tx = ";
    cin>>b.rb.x;
    cout<<"\ty = ";
    cin>>b.rb.y;
    // варианты пересечения прямоугольников
    if(a.rb.y>b.lt.y || a.lt.y<b.rb.y || a.lt.x>b.rb.x || a.rb.x<b.lt.x)
    {
        cout<<"Прямоугольники не пересекаются"<<endl;
    }
    else
    {
        c.lt.y=min(a.lt.y,b.lt.y);
        c.lt.x=max(a.lt.x,b.lt.x);
        c.rb.y=max(a.rb.y,b.rb.y);
        c.rb.x=min(a.rb.x,b.rb.x);
        cout<<"Координаты пересечения:"<<endl;
        cout<<"левый верхний угол: x = "<<c.lt.x<<"\t y = "<<c.lt.y<<endl;
        cout<<"правый нижний угол: x = "<<c.rb.x<<"\t y = "<<c.rb.y<<endl;
    }   
    return 0;
}
 
int min(int a, int b)
{
    if(a<b)
        return a;
    else
        return b;
}
 
int max(int a, int b)
{
    if(a>b)
        return a;
    else
        return b;
}
Agent Smith
40 / 40 / 9
Регистрация: 24.11.2012
Сообщений: 200
27.02.2013, 16:30  [ТС]     Координаты пересечения двух прямоугольников #3
спасибо я чет посмотрел там много вариантов пересечения думал все придется просчитывать. сам себя испугался, что называется))))
Yandex
Объявления
27.02.2013, 16:30     Координаты пересечения двух прямоугольников
Ответ Создать тему
Опции темы

Текущее время: 21:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru