patterns — recurse

generator verdict no votes yet
source — color/gen_e.g18_recurse
def g18_recurse(rng):
    """Recursive subdivision; the deep leaves carry a dot."""
    steps = rng.randint(5, 7)
    N = rng.choice([25, 30])
    c = Canvas(N, _pal(rng), steps, "recurse", "mixed")
    f = Field(rng, "mesh", warp=rng.uniform(0.15, 0.35), 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
        t = f.raw(u, v)
        if depth < 2 and t > 0.48 + depth * 0.28 and c.room() > 40:
            for dx in (0, s / 2):
                for dy in (0, s / 2):
                    emit(x + dx, y + dy, s / 2, depth + 1)
        elif depth:
            k = f.idx(u, v)
            c.sq(x, y, s, s, k)
            c.dot(x + s / 2, y + s / 2, s * 0.3, (k + 3) % steps)

    for j in range(N):
        for i in range(N):
            emit(i * C, j * C, C, 0)
    return c
recurse-mixed-30-62ab
recurse-mixed-30-62ab
recurse-mixed-25-1b0f
recurse-mixed-25-1b0f
recurse-mixed-25-7ea0
recurse-mixed-25-7ea0
recurse-mixed-30-564a
recurse-mixed-30-564a

generator