http://groups.csail.mit.edu/graphics/classes/6.837/F98/Lecture21/