Для своей игрушки возникла мысль сделать случайную генерацию поверхностей планет (2D). У нас есть процентное соотношение элементов, из которых состоит планета, на основе которого мы вычисляем процентное соотношение элементов на поверхности планеты. Каждому элементу соответствует определенный цвет (допустим: вода — 70%, голубой или белый у полюсов; почвы — 20%, зеленый; песчаники — 10%, желтый; соединения кремния — 10%, темно-коричневый или черный). Соответственно нужно сгенерировать карту планеты, состоящую из указанных цветных областей указанной площади (не обязательно они могут быть в одном месте — должны быть океаны, континенты, моря). Каким образом можно осуществить генерацию карты? Какие есть алгоритмы?
Поскольку игрушка 2D, то вращение планеты будет осуществляться таким образом: по сгенерированной прямоугольной карте будет двигаться круг, область внутри которого и будет отображаемой поверхностью планеты. Оптимален ли этот способ или существуют лучше? Какую картографическую проекцию следует использовать в этом случае и как учесть это при генерации?
Если полюса планируете делать необитаемыми, то лучше всего подойдёт проекция Меркатора.
Главный минус проекции в том, что карта сильно деформируется к полюсу. Положительные особенности таковы, что, во-первых, проекция равноугольная; во-вторых, деформации пропорциональные (круг на экваторе остаётся кругом ближе к полюсу)
Планеты будут полностью необитаемыми (т.е. это только для вида в космосе, а при приближении там уже будут свои локации). При проекции Меркатора, если я буду отображать круглое скользящее окно, нормально будут отрисовываться полюса? Какие преобразования нужно сделать для перехода в эту проекцию?
А если просто генерировать случайные числа (скажем от 1 до 100) и в зависимости от процентного соотношения цвета ставить тот или иной пиксель на карте? Т.е. случайно разбросать все.
Трехмерная графике — не подходит. Надо двумерную без изометрии. В принципе, можно подумать в сторону литосферных плит. Разбить планеты в несколько плит и на их стыках создать горы и материки.
Проблема в том, что сгенерировать надо на стороне клиента очень много планет — тысячи звездных систем. При этом сами планеты можно приближать не сильно.