Я пытаюсь узнать о Perlin Noise и процедурной генерации. Я читаю онлайн-руководство по созданию ландшафтов с шумом, но я не понимаю часть объяснения автора о создании областей с большей высотой.
На этой веб-страницы в разделе "острова" есть текст
Создайте форму, которая соответствует тому, что вы хотите от островов. Используйте нижнюю фигуру, чтобы подтолкнуть карту вверх, и верхнюю фигуру, чтобы подтолкнуть карту вниз. Эти формы являются функциями от расстояния d до высоты 0-1. Установите e = нижний (d) + e * (верхний (d) - нижний (d)).
Я хочу сделать это, но я не уверен, что автор имеет в виду, когда говорит о верхних и нижних формах.
Что мог иметь в виду автор, говоря: «Используйте нижнюю форму, чтобы подтолкнуть карту вверх, и верхнюю форму, чтобы подтолкнуть карту вниз»?
Пример кода:
from __future__ import division
import numpy as np
import math
import noise
def __noise(noise_x, noise_y, octaves=1, persistence=0.5, lacunarity=2):
"""
Generates and returns a noise value.
:param noise_x: The noise value of x
:param noise_y: The noise value of y
:return: numpy.float32
"""
value = noise.pnoise2(noise_x, noise_y,
octaves, persistence, lacunarity)
return np.float32(value)
def __elevation_map():
elevation_map = np.zeros([900, 1600], np.float32)
for y in range(900):
for x in range(1600):
noise_x = x / 1600 - 0.5
noise_y = y / 900 - 0.5
# find distance from center of map
distance = math.sqrt((x - 800)**2 + (y - 450)**2)
distance = distance / 450
value = __noise(noise_x, noise_y, 8, 0.9, 2)
value = (1 + value - distance) / 2
elevation_map[y][x] = value
return elevation_map