Заполнение массива с помощью шума Перлина
Я пытаюсь заполнить двумерный массив с помощью шума Перлина. Но получается, что массив разбит по диагонали так, что верхний левый треугольник всегда больше правого нижнего треугольника. Возможно я что то делаю не так, подскажите пожалуйста, как заполнить массив равномерно
Вот мой код. В нем я получаю значения с помощью шума Перлина и преобразую их от 0 до 5
from opensimplex import OpenSimplex
gen = OpenSimplex()
def noise(nx, ny):
# Rescale from -1.0:+1.0 to 0.0:1.0
return gen.noise2d(nx, ny) / 2.0 + 0.5
width = 20
height = 20
value = []
for y in range(height):
value.append([0] * width)
for x in range(width):
nx = x/width - 0.5
ny = y/height - 0.5
value[y][x] = noise(nx, ny)
for x in range(20):
for y in range(20):
v = value[x][y]
if v < 0.2:
value[x][y] = 0
elif v < 0.4:
value[x][y] = 1
elif v < 0.6:
value[x][y] = 2
elif v < 0.8:
value[x][y] = 3
else:
value[x][y] = 5
for row in value:
for item in row:
print(item, end=' ')
print()
В итоге я получаю вот такой массив:
3 3 5 5 5 3 3 3 3 3 3 3 2 2 2 2 2 2 1 1
3 3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 1 1 1
3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 1 1 1
3 3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 1 1 1 1
3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 2 1 1 1 1
3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 1 1 1 1 1
3 3 3 3 3 3 3 3 3 3 2 2 2 2 2 1 1 1 1 1
3 3 3 3 3 3 3 3 3 2 2 2 2 2 1 1 1 1 1 1
3 3 3 3 3 3 3 3 3 2 2 2 2 2 1 1 1 1 1 1
3 3 3 3 3 3 3 3 2 2 2 2 2 1 1 1 1 1 1 0
3 3 3 3 3 3 3 3 2 2 2 2 2 1 1 1 1 1 1 0
3 3 3 3 3 3 3 3 2 2 2 2 1 1 1 1 1 1 0 0
3 3 3 3 3 3 3 2 2 2 2 2 1 1 1 1 1 1 0 0
3 3 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 0 0 0
2 3 3 3 3 2 2 2 2 2 2 1 1 1 1 1 1 0 0 0
2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 0 0 0
2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 0 0 0 0
2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 0 0 0 0
2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 0 0 0 0 0
2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 0 0 0 0 0