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 } } } func line(fb *Framebuffer, color uint, v0 Vec2i, v1 Vec2i) { Bresenham2(fb, color, v0.X, v0.Y, v1.X, v1.Y) } func Triangle1(fb *Framebuffer, color uint, v0 Vec2i, v1 Vec2i, v2 Vec2i) { line(fb, color, v0, v1) line(fb, color, v1, v2) line(fb, color, v2, v0) }