假设坐标轴方向
使用截距形式表示为
但是没有必要去用
因此可以用
xxxxxxxxxxvoid Line(int x0, int y0, int x1, int y1) { int dx = x1 - x0; int dy = y1 - y0; float e = 0.0f; float de = float(dy) / float(dx); int y = y0; for (int i = x0; i < x1; i++) { setPixel(i, y, color); e += de; if (abs(e) >= 0.5f) { y += 1; e -= 1.0f; } }}x
fn line(x0: u32, y0: u32, x1: u32, y1: u32) { let dx: u32 = x1 - x0; let dy: u32 = y1 - y0; let mut e: f32 = 0.0; let de: f32 = dy as f32 / dx as f32; let mut y = y0; for i in x0..x1 { setPixel(i, y, color); e += de; if e.abs() > 0.5 { y += 1; e -= 1.0; } }}