Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Оптимальное покрытие многоугольника квадратами. 
:(
    Опции темы
WaldemarL
Дата 20.11.2007, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 10.7.2007

Репутация: нет
Всего: нет



Задача такая. Даны координаты вершин многоугольника. Нужно покрыть этот многоугольник квадратами с фиксированной длинной стороны так, чтобы число квадратов было минимальным. Все перечесения диагоналей квадратов должны при этом принадлежать области ограниченной многоуголькиком. Решать задачу нужно на С++, но на данный момент нужен сам алгоритм.

Решить эту задачу математически не могу, так же как и в общем случае  smile  Упрощенную задачу, когда все углы многоугольника равны 90 градусов тоже смог ршить только через Ж  smile  Для этого:

1) Строю точечный рисунок - фон. Это большой квадрат одного цвета (скажем зеленого). 

2) В нем рисую данный многоугольник и закрашиваю его другрм цветом (синим).

3) Описываю данный многоугольник другим большим квадратом (ничего не рисуя) и выбираю один из 
его углов совпадающих с какой-либо вершиной многоугольника. Эта исходная точка.

ДАЛЬШЕ ИДЕТ ЦИКЛ: Х-овая координата исходной точки изменятеся от ее начального положения до плюч/минус сторона квадрата. То же во вложеном цикле делаю с У-ковой координатой, таким образом перебираются покрытия. Получается разумеется перебор не всех покрытий, которых бесконечное число, а перебор их конечного подмножества.

4) Начиная с найденой исходной точки строю сетку из маленьких квадратов с длиной стороны равной заданному значению, которая покрывает большой квадрат описывающий многоуголькик. Эта сетка в последующем должна быть преобразована к искомой сетке - покрытию.

5) В полученой сетке все квадраты, пересечение диагоналей которых не принадлежит многоугольнику, а одна из вершин принадлежит (определяю это по цвету пикселя с координатами вершин и пересечения диагоналей) , смещаю так, чтобы пересечение диагоналей стало принадлежать многоугольнику (имело синий цвет, а не зеленый). ИМЕННО НЕОБХОДИМОСТЬЮ ВЫБОРА НАПРАВЛЕНИЯ СМЕЩЕНИЯ ОБУСЛОВЛЕНО УПРОЩЕНИЕ ЗАДАЧИ до случая многоугольника с углами в 90 градусов.

КОНЕЦЦИКЛА


6) Из всех покрытий полученных в цикле выбираю то, которое содержит наименьшее число квадартов.


Если кто нибудь встречал алгоритм проще или универасльнее - поделитесь пожалуйтса информацией. Конечно желательно чтобы в последующем была возможность превратить его словесное описание в програмную реализацию.  Заранее спасибо за ответы  smile 
PM MAIL   Вверх
Akina
Дата 20.11.2007, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20580
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(WaldemarL @  20.11.2007,  13:15 Найти цитируемый пост)
перечесения диагоналей квадратов 

Это центр, что ли?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
WaldemarL
Дата 20.11.2007, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 10.7.2007

Репутация: нет
Всего: нет



Да, центр.
PM MAIL   Вверх
marcusmae
Дата 21.11.2007, 01:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: нет
Всего: 39



Здравствуйте, WaldemarL,

Испольуете ли вы какую-нибудь вспомогательную литературу по Вашему вопросу? = Вот, поприставал к поисковикам, нашёл и загрузил для Вас статью, по-моему неплохую :

A Linear Time Approximation Algorithm for Minimum Rectangular Covering (Приближённый Линейный по Времени Алгоритм Минимального Покрытия [Полигона] Прямоугольниками). Там в абстракте такая же постановка задачи.

А то, наверно, с нуля изобретать будет слишком долго...

Это сообщение отредактировал(а) marcusmae - 21.11.2007, 01:25


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
WaldemarL
Дата 21.11.2007, 03:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 10.7.2007

Репутация: нет
Всего: нет



Цитата(marcusmae @ 21.11.2007,  01:16)
A Linear Time Approximation Algorithm for Minimum Rectangular Covering (Приближённый Линейный по Времени Алгоритм Минимального Покрытия [Полигона] Прямоугольниками). Там в абстракте такая же постановка задачи.

Большое спасибо за ссылку! Я уже гуглил по этому поводу, но ничего стоящего до сих пор не нахадил. Наверное потому что все делал в русской раскладке smile Пошел читать )))
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0671 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.