Source: http://www.professeurs.polymtl.ca/luc.baron/files/Intro3D.pdf