package main import ( "math" ) func Bresenham2(fb *Framebuffer, color uint, x0 int, y0 int, x1 int, y1 int) { dx := int(math.Abs(float64(x1 - x0))) sx := -1 if x0 < x1 { sx = 1 } dy := -int(math.Abs(float64(y1 - y0))) sy := -1 if y0 < y1 { sy = 1 } err := dx + dy for { fb.SetSafe(uint(x0), uint(y0), color) if x0 == x1 && y0 == y1 { break } e2 := 2 * err if e2 >= dy { if x0 == x1 { break } err += dy x0 += sx } if e2 <= dx { if y0 == y1 { break } err += dx y0 += sy } } }