Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование в широком смысле слова > Алгоритмика

Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения

Ответ
 
Опции темы
Старый 15.02.2012, 18:15   #1
Sholar
AnyKey`щик
 
Регистрация: 15.02.2012
Сообщений: 2
Написано 0 полезных сообщений
(для 0 пользователей)
Разбить игровое поле на ячейки проивзольной формы.

Доброго всем времени суток.
Сабж в названии темы. Как грамотно реализовать разбивку поля на ячейки произвольно размера и формы. Сие часто можно увидеть в пошаговых стратегиях, к примеру в таких играх как Hears of Iron, Victoria и т.д. Вот еще очень интересный пример. В голову почему-то не лезут никакие толковые мысли. В идеале нужен исходник(хорошо бы на С/C++, но и на любом другом языке тоже подойдет), буду благодарен также за любую теорию или ссылки по теме.
(Offline)
 
Ответить с цитированием
Старый 16.02.2012, 02:23   #2
YellowAfterlife
ПроЭктировщик
 
Аватар для YellowAfterlife
 
Регистрация: 19.02.2011
Сообщений: 134
Написано 81 полезных сообщений
(для 219 пользователей)
Ответ: Разбить игровое поле на ячейки проивзольной формы.

Должно быть, вы ищете что-то в этом роде.
В англ. версии статьи можно увидеть объяснение измененной версии, которая по виду довольно близко подходит к ячейкам первой упомянутой игры.
__________________

Мой сайт-блог. Игры, обновления, примеры для Haxe, JavaScript(+HTML5), GameMaker, Love2d...
(Offline)
 
Ответить с цитированием
Старый 16.02.2012, 09:31   #3
Sholar
AnyKey`щик
 
Регистрация: 15.02.2012
Сообщений: 2
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Разбить игровое поле на ячейки проивзольной формы.

Вы третий кто мне это посоветовал) Это не подходит. Возьмем следующее расположение ячеек:

Красные точки это "центры" или "образующие" ячеек. Синяя точка лежит в черной ячейке, но она более близка к центру белой ячейки, и при расчетах будет относится к белой.
(Offline)
 
Ответить с цитированием
Старый 19.02.2012, 00:47   #4
genroelgvozo
Нуждающийся
 
Регистрация: 08.05.2008
Сообщений: 87
Написано 9 полезных сообщений
(для 15 пользователей)
Ответ: Разбить игровое поле на ячейки проивзольной формы.

хранить границу (в виде ломанной) и проверять принадлежность точки, тут для не выпуклых многоугольников сложнее, поэтому советую разбивать на выпуклые и запоминать ввиде списка
ну для выпуклых вот алгоритм http://e-maxx.ru/algo/pt_in_polygon
правда тут надо еще оптимизировать тем что проверять достаточно ли близко к центру и тогда только проверять
ну либо делать туже диаграмму воронова, но только некоторые области будут связаны и в логике будут одной ячейкой
__________________
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 16:21.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com