Source: http://eavr.u-strasbg.fr/~nageotte/sujet_FIP_juin_2012.pdf