Move mouse left/right to rotate. Click the right button to decrease fov (field of view), and the left button to increase. It may be interesting to note that this doesn't use WebGL, all projection and rendering is done with the 2d canvas context. The Code Player really helped me understand the process: http://thecodeplayer.com/walkthrough/3d-perspective-projection-canvas-javascript And RectangleWorld the actual math: http://rectangleworld.com/blog/archives/298