improved Bresenham