http://www.benjaminkeen.com/misc/canvas.html
http://www.benjaminkeen.com/misc/canvas_swirly.html