Welcome, guest | Sign In | My Account | Store | Cart

Worley Noise is a type of parametric texture used for water, rock, leaf etc. textures in computer graphics.

The algorithm is a slightly modified version of Voronoi Diagram.

Python, 36 lines
 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36``` ```# Worley Noise Generator # http://en.wikipedia.org/wiki/Worley_noise # FB36 - 20130216 import math import random from PIL import Image, ImageDraw imgx = 500; imgy = 500 # image size image = Image.new("RGB", (imgx, imgy)) draw = ImageDraw.Draw(image) pixels = image.load() n = 100 # of seed points m = 0 # random.randint(0, n - 1) # degree (?) seedsX = [random.randint(0, imgx - 1) for i in range(n)] seedsY = [random.randint(0, imgy - 1) for i in range(n)] # find max distance maxDist = 0.0 for ky in range(imgy): for kx in range(imgx): # create a sorted list of distances to all seed points dists = [math.hypot(seedsX[i] - kx, seedsY[i] - ky) for i in range(n)] dists.sort() if dists[m] > maxDist: maxDist = dists[m] # paint for ky in range(imgy): for kx in range(imgx): # create a sorted list of distances to all seed points dists = [math.hypot(seedsX[i] - kx, seedsY[i] - ky) for i in range(n)] dists.sort() c = int(round(255 * dists[m] / maxDist)) pixels[kx, ky] = (0, 0, c) label = "N = " + str(n) + " M = " + str(m) draw.text((0, 0), label, (0, 255, 0)) # write to top-left using green color image.save("WorleyNoise.png", "PNG") ``` Created by FB36 on Sat, 16 Feb 2013 (MIT)