forked from: Bresenham Line & Circles

