Генератор поверхности планеты (генератор карт)?

Добрый день.


Для своей игрушки возникла мысль сделать случайную генерацию поверхностей планет (2D). У нас есть процентное соотношение элементов, из которых состоит планета, на основе которого мы вычисляем процентное соотношение элементов на поверхности планеты. Каждому элементу соответствует определенный цвет (допустим: вода — 70%, голубой или белый у полюсов; почвы — 20%, зеленый; песчаники — 10%, желтый; соединения кремния — 10%, темно-коричневый или черный). Соответственно нужно сгенерировать карту планеты, состоящую из указанных цветных областей указанной площади (не обязательно они могут быть в одном месте — должны быть океаны, континенты, моря). Каким образом можно осуществить генерацию карты? Какие есть алгоритмы?


Поскольку игрушка 2D, то вращение планеты будет осуществляться таким образом: по сгенерированной прямоугольной карте будет двигаться круг, область внутри которого и будет отображаемой поверхностью планеты. Оптимален ли этот способ или существуют лучше? Какую картографическую проекцию следует использовать в этом случае и как учесть это при генерации?
  • Вопрос задан
  • 17856 просмотров
Пригласить эксперта
Ответы на вопрос 6
@Aquahawk
en.wikipedia.org/wiki/Perlin_noise
Супер крутая штука для этого
Ответ написан
Комментировать
vldkr
@vldkr
Если полюса планируете делать необитаемыми, то лучше всего подойдёт проекция Меркатора.
Главный минус проекции в том, что карта сильно деформируется к полюсу. Положительные особенности таковы, что, во-первых, проекция равноугольная; во-вторых, деформации пропорциональные (круг на экваторе остаётся кругом ближе к полюсу)
Ответ написан
vldkr
@vldkr
Дельный XKCD комикс в тему. А вообще, лучшая карта — это глобус.
Ответ написан
Комментировать
@orangeflute
Используйте алгоритмы процедурного генерирования (Procedural Content Generation Algorithms). Вот тут можно о них почитать.
Ответ написан
Комментировать
Также можете посмотреть на библиотеку libnoise.
Ответ написан
Комментировать
@Robotex Автор вопроса
А если просто генерировать случайные числа (скажем от 1 до 100) и в зависимости от процентного соотношения цвета ставить тот или иной пиксель на карте? Т.е. случайно разбросать все.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы