Author: J.E. Bresenham