Author: J. E. Bresenham