revert line impl
This commit is contained in:
parent
94eaa60fde
commit
4c7337a694
1 changed files with 6 additions and 18 deletions
24
src/main.rs
24
src/main.rs
|
@ -112,39 +112,27 @@ fn _bench(fb: &mut TGAImage) {
|
|||
}
|
||||
}
|
||||
|
||||
fn line(a: Point2i, b: Point2i, color: TGAColor, fb: &mut TGAImage) {
|
||||
let verts = line_verts(a, b);
|
||||
for v in verts.into_iter() {
|
||||
fb.set(v.x as u32, v.y as u32, color);
|
||||
}
|
||||
}
|
||||
|
||||
fn line_verts(mut a: Point2i, mut b: Point2i) -> Vec<Point2i> {
|
||||
fn line(mut a: Point2i, mut b: Point2i, color: TGAColor, fb: &mut TGAImage) {
|
||||
let is_steep = (a.x - b.x).abs() < (a.y - b.y).abs();
|
||||
if is_steep {
|
||||
std::mem::swap(&mut a.x, &mut a.y);
|
||||
std::mem::swap(&mut b.x, &mut b.y);
|
||||
}
|
||||
if a.x > b.x {
|
||||
std::mem::swap(&mut a.x, &mut b.x);
|
||||
std::mem::swap(&mut a.y, &mut b.y);
|
||||
std::mem::swap(&mut a, &mut b);
|
||||
}
|
||||
|
||||
let mut verts: Vec<Point2i> = Vec::new();
|
||||
|
||||
let step = (b.y - a.y) as f32 / (b.x - a.x) as f32;
|
||||
let mut y = a.y as f32;
|
||||
for x in (a.x)..b.x {
|
||||
let p = if is_steep {
|
||||
Point2i::new(y.round_ties_even() as i32, x)
|
||||
let (px, py) = if is_steep {
|
||||
(y.round_ties_even() as i32, x)
|
||||
} else {
|
||||
Point2i::new(x, y.round_ties_even() as i32)
|
||||
(x, y.round_ties_even() as i32)
|
||||
};
|
||||
verts.push(p);
|
||||
fb.set(px as u32, py as u32, color);
|
||||
y += step;
|
||||
}
|
||||
|
||||
verts
|
||||
}
|
||||
|
||||
fn triangle_lines(a: Point2i, b: Point2i, c: Point2i, color: TGAColor, fb: &mut TGAImage) {
|
||||
|
|
Loading…
Reference in a new issue