创建随机模式渐变映射?

时间:2018-05-03 15:01:54

标签: python numpy gradient procedural-generation perlin-noise

所以我一直致力于一些程序生成,我设法创建一个圆形单色渐变地图,用于生成其他地图。

def create_circular_gradient(self, world):
    center_x, center_y = self.mapSize[1] // 2, self.mapSize[0] // 2
    circle_grad = np.zeros_like(world)

    for y in range(world.shape[0]):
        for x in range(world.shape[1]):
            distx = abs(x - center_x)
            disty = abs(y - center_y)
            dist = math.sqrt(distx * distx + disty * disty)
            circle_grad[y][x] = dist

    # get it between -1 and 1
    max_grad = np.max(circle_grad)
    circle_grad = circle_grad / max_grad
    circle_grad -= 0.5
    circle_grad *= 2.0
    circle_grad = -circle_grad

    # shrink gradient
    for y in range(world.shape[0]):
        for x in range(world.shape[1]):
            if circle_grad[y][x] > 0:
                circle_grad[y][x] *= 20

    # get it between 0 and 1
    max_grad = np.max(circle_grad)
    circle_grad = circle_grad / max_grad
    grad_world = self.apply_gradient_noise(world, circle_grad)
    return grad_world

现在我的问题是,我究竟需要如何修改它以随机方式创建一个旋涡渐变?甚至可能是一个盒子或不同的线性渐变?

请注意,world是一个随机生成的2d数组(可以是任何形状,如100x100甚至100x50但当然我使用它要大得多)和圆渐变,我添加了一个perlin噪音使这一代随机化。随机化它的代码适用于任何地图,但我不知道从哪里开始创建不同形状的渐变。

修改 忽略神奇的数字,这是我找到如何创建圆形单色渐变的唯一方法

0 个答案:

没有答案