Esempio n. 1
0
def test_udf():
    c0 = create_circle(200, 200, 0.3)
    c1 = create_circle(200, 200, 0.08, 0.8, 0.8)
    c0 = np.clip(c0 + c1, 0, 1)
    circles = snowy.add_border(c0, value=1)
    mask = circles != 0.0
    udf = snowy.unitize(snowy.generate_udf(mask))
    nx, ny = snowy.gradient(udf)
    grad = snowy.unitize(nx + ny)
    snowy.show(snowy.hstack([circles, udf, grad]))
Esempio n. 2
0
def test_gdf():
    "This is a (failed) effort to create a smoother distance field."
    c0 = create_circle(200, 200, 0.3)
    c1 = create_circle(200, 200, 0.08, 0.8, 0.8)
    c0 = np.clip(c0 + c1, 0, 1)
    circles = snowy.add_border(c0, value=1)
    circles = np.clip(snowy.blur(circles, radius=2), 0, 1)
    circles = np.clip(snowy.blur(circles, radius=2), 0, 1)
    source = (1.0 - circles) * 2000.0
    gdf = np.sqrt(snowy.generate_gdf(source))
    gdf = snowy.unitize(gdf)
    nx, ny = snowy.gradient(gdf)
    grad = snowy.unitize(nx + ny)
    snowy.show(snowy.hstack([circles, gdf, grad]))
Esempio n. 3
0
def test_tileable_distance():
    c0 = create_circle(400, 200, 0.3)
    c1 = create_circle(400, 200, 0.08, 0.8, 0.8)
    circles = np.clip(c0 + c1, 0, 1)
    mask = circles != 0.0

    sdf = snowy.unitize(snowy.generate_sdf(mask, wrapx=True, wrapy=True))
    nx, ny = snowy.gradient(sdf)
    grad = snowy.unitize(nx + ny)
    stack2 = np.hstack([sdf, sdf, grad, grad])

    snowy.show(snowy.resize(np.vstack([stack2, stack2]), 600, 200))

    get_mask = lambda L, U: np.logical_and(sdf > L, sdf < U)
    get_contour = lambda L, U: np.where(get_mask(L, U), sdf, 0)
    sdf -= get_contour(.20, .25)
    sdf -= get_contour(.60, .65)
    sdf -= get_contour(.90, .95)

    snowy.show(snowy.resize(np.hstack([sdf, sdf, sdf, sdf]), height=300))
Esempio n. 4
0
def test_noise_smoothness():
    noise = 0.5 + 0.5 * snowy.generate_noise(300, 150, 4, seed=42)
    grad = snowy.gradient(noise)
    grad = grad[0] + grad[1]
    grad = snowy.unitize(grad)
    snowy.show(grad)