Perlin noise is used extensively in 3D graphics to create procedural textures for marble, smoke, fire and wood. It is cheap to compute, and easy to tune. Our algorithm introduces extra vertices into lines, rectangles and polygonal shapes, and then distorts the coordinates of those vertices. The number of added vertices must be chosen carefully - too many, and the rendering takes too long, particularly if the number of components is high or during animations and direct manipulations. We tried a number of different algorithms, including various levels of Perlin noise, and Perlin noise at multiple frequencies.
T determines what part of the noise curve is sampled for that object.
Freq determines the rate of sampling, Amp indicates the level, and Steps indicates how many samples to introduce per line segment. The drawing algorithm is straightforward. This keeps the amount of distortion proportional to the length of the line - making both short and long lines look reasonable. An additional efficiency improvement would be to modulate the number of samples by the thickness or length of the line, so small thin lines are cheap. In fact, it is straightforward to dynamically change these values, to produce animated interfaces which flicker and wiggle like a hand-drawn cartoon.