forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Алгоритмика (http://forum.boolean.name/forumdisplay.php?f=21)
-   -   Разбить игровое поле на ячейки проивзольной формы. (http://forum.boolean.name/showthread.php?t=16338)

Sholar 15.02.2012 18:15

Разбить игровое поле на ячейки проивзольной формы.
 
Доброго всем времени суток.
Сабж в названии темы. Как грамотно реализовать разбивку поля на ячейки произвольно размера и формы. Сие часто можно увидеть в пошаговых стратегиях, к примеру в таких играх как Hears of Iron, Victoria и т.д. Вот еще очень интересный пример. В голову почему-то не лезут никакие толковые мысли. В идеале нужен исходник(хорошо бы на С/C++, но и на любом другом языке тоже подойдет), буду благодарен также за любую теорию или ссылки по теме.

YellowAfterlife 16.02.2012 02:23

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

Sholar 16.02.2012 09:31

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

Красные точки это "центры" или "образующие" ячеек. Синяя точка лежит в черной ячейке, но она более близка к центру белой ячейки, и при расчетах будет относится к белой.

genroelgvozo 19.02.2012 00:47

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


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot