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

Функция для определения прямоугольников по 4 точкам - C++

Восстановить пароль Регистрация
 
Oddycok
Сообщений: n/a
01.02.2013, 17:04     Функция для определения прямоугольников по 4 точкам #1
Написать функцию для нахождения прямоугольников зная их вершины (прямоугольники расположены случайно - НЕ параллельно осям х, у)

Точки даны в массиве, например,
0 0
0 3
3 0
3 3

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
 for (ii=0; ii<M ;ii++ )
        {   
            x3=*(*(ss+ii)+0);
            y3=*(*(ss+ii)+1);
            
                for (jj=0; ;jj++ )
              {
              x2=*(*(ss+jj)+0);
              y2=*(*(ss+jj)+1);
 
                    for (zz=0; ;zz++ )
                 {
                  x1=*(*(ss+zz)+0);
                  y1=*(*(ss+zz)+1);
 
                         for (ff=0; ;ff++ )
                          {
                          x0=*(*(ss+ff)+0);
                                    y0=*(*(ss+ff)+1);
                               
                                
                          
 
              kk=((x2-x1)*(x0-x1)+(y2-y1)*(y0-y1));
                           ll=((x2-x3)*(x0-x3)+(y2-y3)*(y0-y3));
 
 
 
 
                           if ((kk==0)&(ll==0))
                           {
                               cout << x0<<y0<<endl<<x1<<y1<<endl<<x2<<y2<<endl<<x3<<y3<<endl;
                              
                           }
 
                           if (ff==M-1)
                               ff=0;
                          
                         }
 
                         if (zz==M-1)
                               zz=0;
                         
                    }
                    if (jj==M-1)
                               jj=0;
                    
                }
                }
Выводится очень много точек вроде
0 0
0 0
0 0
3 0
0 0
0 0
0 0
3 3
итд
Если добавить условия проверки на вырожденость (т е не одна точка не соответствует другой)
C++
1
(((x0!=x3)||(y0!=y3))&((x0!=x1)||(y0!=y1))&((x1!=x2)||(y1!=y2))&((x2!=x3)||(y2!=y3)))
То в ответе можно получить только
0 0
0 0
0 0
0 0

Так же пробовал по-другому
Например через равенство длин диагоналей и тд - результат как при проверке на вырожденость.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2013, 17:04     Функция для определения прямоугольников по 4 точкам
Посмотрите здесь:

C++ Функция для определения минимального элемента вектора
Функция для определения полярных координат точки по ее прямоугольным декартовым координатам C++
C++ Функция для определения% содержания символа в строке
C++ Функция для определения знака перед числом
C++ Рекурсивная функция для определения палиндромов
Intrinsic функция для определения количества единиц в блоке C++
C++ Разработать функцию для определения и расчёта площади пятиугольника. По координатным точкам. (х1,у1) и т.д
C++ Функция - метода класса для определения совпадения имени человека с некоторым заданным

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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