Source: http://www.iet.unipi.it/a.bechini/mj/docs/Java_07_Graphics.pdf