2012-01-14 3 views
2

Можно создать дубликат:
Diamond square algorithmКак написать алгоритм алмазного квадрата в C++?

Я пытаюсь использовать алгоритм алмазную-квадрат для создания местности в моей 2D игры. Я нашел много ресурсов, объясняющих алгоритм, но ни один из них не показывает, как реализовать его на C++. Я создаю игру на основе плитки и хотел бы использовать алгоритм для создания случайного мира (вода, песок, трава, горы). Мой план состоит в том, чтобы использовать значения алгоритма с алмазным квадратом для определения плитки. Ex. Если значение меньше 1, вода. Если значение больше 10, гора. И т. Д.

Так что в основном то, о чем я прошу, есть ли у кого-нибудь пример C++ для алгоритма алмазного квадрата, который я могу посмотреть и настроить?

+0

я пытался перевести его, и он частично работает. Я получаю результаты, такие как [это] (http://imgur.com/0rY5D,eq1bb,Mazbu,8thrV,iCg03,BHbU9,kRRql,9oTVR,ACDdA, MiCns). Я почти уверен, что что-то испортил. – rmaes4

ответ

6

Вы можете найти рабочую реализацию C++ алгоритма here (см. Функцию «Шум» и ее вспомогательные функции).

Также обратите внимание, что эта реализация несколько сложнее, поскольку она использует бикубическую интерполяцию для предотвращения создания алгоритма алмазного квадрата артефактов со стандартной билинейной интерполяцией (см. Всплески на изображении ниже).

enter image description here

Отказ от ответственности: Я автор этого проекта (не стесняйтесь использовать код в соответствии с условиями лицензии GPLv2)