假设坐标轴方向
使用截距形式表示为
但是没有必要去用
因此可以用
xxxxxxxxxx
void 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;
}
}
}