Ответ 1
Если вы хотите создать простое 2D-контурное изображение, я бы попробовал следующее:
- Создайте некоторые данные о высоте. Я бы просто использовал для этого серо-масштабное изображение, а не ascii. Вы можете создавать основные карты высоты в MS Paint или что-то подобное.
- Сгладить данные. Например, примените размытие или увеличьте разрешение с помощью плавного фильтра.
- Рассмотрите возможность зажимания всех данных высоты ниже определенной точки - это означает уровень воды, если вы этого хотите.
- Количественные данные. Чем больше вы квантуете, тем меньше, но более очевидны контуры.
- Примените ложную раскраску, используя поиск палитры. Например: низколежащие области синие, для воды, затем желтые, для песка, зеленые для травы, коричневые для земли, серые для скалы и белые для снега.
Важными частями являются расширенный/сглаживающий фильтр, который создает более интересные формы для ваших контуров и квантование, которое фактически создает сами контуры.
Вы можете играть со стадиями этого. Например, вы можете ввести некоторый шум в ландшафт, чтобы сделать его более естественным, если ваши исходные данные очень чисты. Или вы можете увеличить сглаживание, если хотите, чтобы все было очень округлено.
Если вы хотите использовать ascii, вы можете просто сгенерировать растровое изображение непосредственно из этого, что было бы непросто. Асим, который вы используете в качестве примера, хотя и разделен по странам, а не по рельефу местности, поэтому ложная раскраска и контурная обработка, вероятно, сделают неправильную вещь. Вы, вероятно, могли бы использовать его в качестве источника для простого генератора местности, возможно, просто имея пару символов, чтобы обозначать, где вы хотите землю, море, горы и т.д.
Вот очень простой пример, который я выбил, это просто приложение предложенной мной техники. Я не использовал никаких фреймворков или библиотек, всего несколько простых функций обработки изображений и карту высот Европы, которую я нашел: