Some ideas from http://www.cs.helsinki.fi/group/goa/mallinnus/lines/bresenh.html