http://www.sunsetlakesoftware.com/2008/10/22/3-d-rotation-without-trackball