patterns — quadtree

generator verdict no votes yet
source — color/gen_e.g13_quadtree
def g13_quadtree(rng):
    """Cells subdivide where the field changes fastest."""
    steps = rng.randint(5, 8)
    N = rng.choice([25, 30])
    c = Canvas(N, _pal(rng), steps, "quadtree", "squares")
    f = Field(rng, "mesh", warp=rng.uniform(0.2, 0.45), steps=steps)
    c.ground_from(f)
    C = c.C

    def emit(x, y, s, depth):
        u, v = (x + s / 2) / 1000.0, (y + s / 2) / 1000.0
        h = s / 2000.0
        vals = [f.raw(u - h, v - h), f.raw(u + h, v - h), f.raw(u - h, v + h), f.raw(u + h, v + h)]
        if depth < 3 and (max(vals) - min(vals)) > 0.05 and c.room() > 80:
            for dx in (0, s / 2):
                for dy in (0, s / 2):
                    emit(x + dx, y + dy, s / 2, depth + 1)
        elif depth:
            c.sq(x, y, s, s, f.idx(u, v))

    for j in range(N):
        for i in range(N):
            emit(i * C, j * C, C, 0)
    return c
quadtree-squares-30-a3c7
quadtree-squares-30-a3c7
quadtree-squares-32-b8c0
quadtree-squares-32-b8c0
quadtree-squares-32-1ea2
quadtree-squares-32-1ea2
quadtree-squares-25-6138
quadtree-squares-25-6138
quadtree-squares-30-a96d
quadtree-squares-30-a96d
quadtree-squares-32-241d
quadtree-squares-32-241d
quadtree-squares-30-6974
quadtree-squares-30-6974
quadtree-squares-32-2960
quadtree-squares-32-2960
quadtree-squares-32-8ac1
quadtree-squares-32-8ac1
quadtree-squares-32-d6fa
quadtree-squares-32-d6fa
quadtree-squares-32-9830
quadtree-squares-32-9830
quadtree-squares-32-047f
quadtree-squares-32-047f
quadtree-squares-32-3fa5
quadtree-squares-32-3fa5
quadtree-squares-32-cc05
quadtree-squares-32-cc05

generator