crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Нужен алгоритм объединения vector<rect>
SandySandy
  опции профиля:
сообщение 25.9.2010, 10:50
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 14.5.2010
Пользователь №: 1714

Спасибо сказали: 0 раз(а)




Репутация:   0  


есть много rect в массиве, это области для обновления, отрисовка на КПК медленная, и естественно хочется выкинуть лишнее.
на какие алгоритмы стоит обратить внимание?


Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 25.9.2010, 10:59
Сообщение #2


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


SandySandy,
требуется уточнение - что собрался выбрасывать, что лишнее?
тема вообще называется "Нужен алгоритм объединения vector<rect>"
если по теме и vector это std::vector то методов куча от алгоритма merge до методов insert append и проч...
если по вопросу про "лишнее" - не понятно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 26.9.2010, 22:02
Сообщение #3


Профессионал
*****

Группа: Модератор
Сообщений: 1609
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


очевидно, имелось в виду объединение прямоугольников в одну общую площадь (точнее, их может быть и несколько), с отбрасыванием "перекрывающихся" прямоугольников.
в голове вертится книга, где про это было подробно написано, но вспомнить название не могу, так как читала я её ещё во времена студенчества.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 26.9.2010, 23:12
Сообщение #4


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Iron Bug,
как ты проницательна - ни за что бы по посту не догадался что имеется ввиду.:) по-моему, могу ошибаться, даже на форуме было что-то подобное
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SandySandy
  опции профиля:
сообщение 30.9.2010, 13:37
Сообщение #5


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 14.5.2010
Пользователь №: 1714

Спасибо сказали: 0 раз(а)




Репутация:   0  


да вы правы, нужно объединение прямоугольников в минимально возможное по количеству не перекрывающихся прямоугольников
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SandySandy
  опции профиля:
сообщение 1.10.2010, 10:03
Сообщение #6


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 14.5.2010
Пользователь №: 1714

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(SandySandy @ 30.9.2010, 13:37) *
да вы правы, нужно объединение прямоугольников в минимально возможное по количеству не перекрывающихся прямоугольников

пока придумал вот такую "грубую" реализацию, разбиваю экран на области например 4х4, создаю bitset например для экрана 320х240 будет 4800 областей, далее цикл по входному вектору с установкой битов, и на основании результатов bitset генерируется новый vector<rect>.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 1.10.2010, 10:09
Сообщение #7


фрилансер
******

Группа: Участник
Сообщений: 2931
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Цитата(SandySandy @ 1.10.2010, 13:03) *
создаю bitset например для экрана 320х240 будет 4800 областей,

лучше тогда bitset<4*4> и создавать - зачем столько озу в КПК съедать ? Границы областей известны - экран, разбитый на 4 части по горизонтали и вертикали.

Твоё решение, кстати, даже побыстрее будет, чем крутой алгоритм объединения прямоугольников ) Только не 4*4, а помельче, наверное, надо. Это - определить экспериментально
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Ответить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.6.2022, 12:06