Генерация регионов на 2D карте - PullRequest
7 голосов
/ 26 сентября 2010

Есть ли хорошие подходы к созданию регионов для 2D-карты? Предположим, у вас есть карта мира, и вы хотите создать границы страны или провинции с несколько реалистичным видом.

Ответы [ 6 ]

6 голосов
/ 28 сентября 2010

Недавно я нашел этот пост (и два его преемника), и я думаю, что он довольно близок к тому, что вы ищете.

http://simblob.blogspot.com/2010/09/polygon-map-generation-part-1.html

Он использует свои методы, чтобысоздавать реалистичные ландшафты, но, надеюсь, вы сможете найти способы использовать те же методы для группировки областей в правдоподобные регионы.

2 голосов
/ 28 сентября 2010

Идея Мартина Келлмана кажется лучшим способом сделать это, так как у вас нет естественной местности, чтобы определить некоторые границы.Генерация случайных точек в пределах ваших границ, а затем Воронои их в границы страны.Вероятно, я бы сделал еще один шаг вперед и выделил бы больше точек, чем желаемые страны, а затем объединил бы несколько смежных ячеек, чтобы сделать некоторые из полученных областей вогнутыми.Вы можете использовать алгоритм, подобный рандомизированному Крускалу, для выполнения слияния (возьмите все страны, объедините две соседние страны, повторяйте, пока не получите желаемую сумму).Я не могу добраться до ссылки Килотана, но она может описать лучший способ объединения ячеек, созданных Вороным.

2 голосов
/ 27 сентября 2010

Тесселяция с использованием Диаграммы Ворони является одним из подходов, и хотя формы могут быть сделаны довольно неправильными, это не очень реалистично.

1 голос
/ 27 сентября 2010

Недавно я наткнулся на ссылку , которая описывает создание трехмерных пейзажей. Вы можете найти некоторые идеи там. Основная суть заключается в использовании 1/f случайного шума; просто взглянув на картинки, это кажется более реалистичным, чем подход диаграммы Вороного (я предполагаю, что вы пытаетесь создать произвольные контуры "страны", не пытаясь следовать каким-либо данным реального мира).

1 голос
/ 27 сентября 2010

Я бы использовал сценарий / программируемый пакет САПР или векторной иллюстрации для рисования фигур вручную, а затем обрабатывал данные с помощью специального сценария в пользовательских файлах данных или непосредственно в исходном коде.Фактически, я делал это несколько раз в прошлом (обычно для генерации кода VB.NET для создания объектов GraphicsPath из чертежей CAD).

Не могли бы вы быть более конкретным?Какой формат нужен этим регионам?Какие данные у вас уже есть?

0 голосов
/ 27 сентября 2010

Одним из возможных (и частичных) решений является много проверок пути между случайной точкой. Зона, в которой сгруппировано множество путей, указывает на точку засорения, то есть физическую, в которой «путешественник» должен был бы пройти. Эти точки хорошо использовать в качестве разделителя между странами.

Гийом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...