Реализация алгоритма Diamond-square из компьютерной графики для построения карт высот. Программа генерирует случайный ландшафт на основе введенных пользователем данных и отображает его на экран, используя разные цвета. У пользователя есть возможность сохранить получившееся изображение и использовать его в своих нуждах.
Алгоритм Diamond-square начинает работу с двумерного массива размера
Одна итерация алгоритма Diamond-square на примере массива 5х5
Шаг 1. Инициализация угловых точек. Присваивание им значений высот (например, выбором случайных чисел).
Шаг 2. Шаг diamond. Нахождение срединной точки, присваивание ей значения, на основе среднего от угловых точек, плюс случайное число.
Шаг 3. Шаг square. Нахождение срединных точек для ромбов, отмеченных черными точками (на этом шаге, по одной точке каждого ромба выходят за пределы массива). Плюс случайное число.
Случайное значение состоит из трёх переменных: R, L и Rand.
- R – фактор неровности (roughness factor) в промежутке от 0 до 1.
- L – длина между вершинами или размер текущего квадрата, который с каждой итерацией будет уменьшаться.
- Rand – функция, которая с равной вероятностью возвращает 1 или -1.
Соответственно, при каждой итерации случайное значение, прибавляющееся к срединным точкам, уменьшается, так как уменьшается размер квадрата.
В шагах diamond, точки, расположенные по краям общего массива, будут иметь только три соседних значения, а не четыре (четвертая точка будет выходить за размерность массива). Есть несколько способов справиться с этим – самое простое, взять среднее от трёх крайних точек. При последовательном использовании с указанием общих начальных значений, этот метод позволяет «сшивать» генерируемые карты высот.
Руководство пользователя можно вызвать в самой программе при нажатии на знак вопроса в правом верхнем углу окна, а после на интересующий вас элемент. Руководство откроется на той странице, где описывается этот элемент. Так или иначе, далее здесь будет продублировано всё руководство пользователя для ознакомления.
Наиболее важная кнопка в программе. Запускает алгоритм, который генерирует карту высот, а затем отображает её на экран. После нажатия на кнопку «Старт» будут недоступны настройки программы, пока не будет вызвана кнопка «Очистка».
Кнопка «Сохранить» становится доступна после выполнения алгоритма. С её помощью можно сохранить полученное изображение.
Кнопка «Очистка» становится доступна после выполнения алгоритма. Стирает полученное изображение, снова делает доступными все настройки.
После того, как изображение было получено, можно кликнуть на него, чтобы разглядеть в деталях.
Позволяет выбрать разрешение изображения в пикселях.
Отвечает за скорость изменения рельефа, чем меньше, тем картинка будет изменяться плавней.
Для работы алгоритма Diamond-square необходимо установить начальные высоты в углах изображения, для этого были добавлены 4-е полосы прокрутки, которые позволяют задать высоту в метрах для соответствующего им угла.
Открывает окно с дополнительными настройками.
Для выхода из программы можно воспользоваться кнопкой «Выход», или просто закрыть окно приложения на крестик.
Экстремальные точки разделяют разные биомы по высоте. Согласно стандартным настройкам:
- высота океана и других глубоких точек изменяется от -3000 м. до -1001 м;
- высота моря и более мелких водоемов от -1000 м. до -1 м;
- высота равнин и небольших холмов от 0 м. до 999 м;
- высота гористой местности и гор от 1000 м. до 2899 м;
- горы покрыты снежными шапками начиная с 2900 м. до 3000 м.
Для изменения высот экстремальных точек были добавлены 5 элементов, которые позволяют выбрать число из определенного диапазона. Измененные настройки сохраняются даже после выхода из программы.
Палитра отвечает за цвета разных биом. Для изменения какого-либо цвета в палитре нужно кликнуть на него, после чего откроется диалоговое окно, где можно будет выбрать любой цвет:
- цвет 1 (-3000 м.) и 2 (-1001 м.) отвечает за начало и конец биома океана и других глубоких точек;
- цвет 3 (-1000 м.) и 4 (-1 м.) отвечает за начало и конец биома моря и более мелких водоёмов;
- цвет 5 (0 м.) и 6 (999 м.) отвечает за начало и конец биома равнин и небольших холмов;
- цвет 7 (1000 м.) и 8 (2899 м.) отвечает за начало и конец биома гористой местности и гор;
- цвет 9 (2900 м.) и 10 (3000 м.) отвечает за начало и конец биома гор, покрытых снежными шапками.
Цвета плавно изменяются по всей длине отрезка для каждого биома. Измененные настройки сохраняются даже после выхода из программы.
С помощью кнопки «Настройки по умолчанию» можно откатить все элементы, которые есть в этом окне, до стандартных настроек.
Чтобы скачать приложение, перейдите по ссылке, там вы увидите 3 файла:
- 1-ый файл - это исполняемый (exe) файл, если вам нужна только сама программа, то скачивайте его и запускайте;
- 2-ой и 3-ий файлы - если вы хотите скачать все файлы для полноценной работы. Исполняемый (exe) файл будет находится по пути: Diamond-square-1.0.0\Diamond square\bin\Debug.