Создание карты территории
Существует ли тривиальный или, по крайней мере, умеренно прямой способ создания карт территорий (например, риск)?
Я смотрел в прошлое, и лучшее, что я мог найти, было нечеткими ссылками на диаграммы Вороного. Пример диаграммы Вороного:
здесь http://www.dma.fi.upm.es/mabellanas/tfcs/fvd/images/voronoi.gif.
Они обещают, но я думаю, что я не видел прямых способов их рендеринга, не говоря уже о том, чтобы держать их в какой-то форме структуры данных, чтобы рассматривать каждую территорию как объект.
Другим подходом, который является обещанием, является наводнение, но опять же я не знаю, как наилучшим образом начать этот подход.
Любые советы будут высоко оценены.
Ответы
Ответ 1
Лучшая ссылка, которую я видел на них, - Вычислительная геометрия: алгоритмы и приложения, которая охватывает диаграммы Вороного, триангуляции Деланея (аналогичные Вороному диаграммы и каждая из них может быть преобразована в другую) и другие подобные структуры данных.
Они говорят обо всех структурах данных, которые вам нужны, но они не дают вам кода, необходимого для его реализации (что может быть хорошим упражнением). В терминах кода поиск в Amazon показывает книгу Вычислительная геометрия в C, которая предположительно поставляется с кодом (хотя, поскольку вы застряли на C, вы бы тоже хотели получить другой и реализовать его на любом языке, который вам нужен). У меня также нет опыта работы с этой книгой, только первый.
Извините, что есть только рекомендуемые книги! Единственный достойный онлайн-ресурс, который я видел на них, - это два Wikipedia статьи, которые на самом деле не говорят о деталях реализации. Эта ссылка может быть полезна.
Ответ 2
Почему бы не использовать карту примитивов (треугольники, квадраты), распределить отправные точки для стран ( "столиц" ), а затем случайным образом расширить страны, добавив случайный соседний примитив в страну.
Ответ 3
CGAL - это библиотека С++, которая имеет структуры данных и алгоритмы, используемые в вычислительной геометрии.
Ответ 4
На самом деле я занимаюсь именно такими вещами для своей видеоигры. Самая полезная информация, которую я нашел, - это две ссылки:
Paul Bourke в UWA, с его статьей в 1989 году о Delaunay и серией ссылок на реализацию.
A отличное объяснение psudocode и визуального выполнения Delaunay на codeGuru.com.
С точки зрения их рендеринга - большинство из найденных мной реализаций потребует массирования, чтобы получить то, что вы хотите, но так как использование этого для игровой карты приведет к ряду точек плюс линии между ними, это может это очень простой вопрос, чтобы сделать это для экранирования.