diff --git a/fractional/src/main.rs b/fractional/src/main.rs index 5df381c..3fd4e5b 100644 --- a/fractional/src/main.rs +++ b/fractional/src/main.rs @@ -344,8 +344,13 @@ fn main() { let tetrahedron = Polyeder::tetrahedron(60.0); let cube = Polyeder::cube(60.0); - let camera = Camera::::new(&canvas, 40); // the orig. view angle + let camera = Camera::::new(&canvas, 45); // the orig. view angle // was 50. + /* + let tetrahedron = Polyeder::tetrahedron(Fractional(60,1)); + let cube = Polyeder::cube(Fractional(60,1)); + let camera = Camera::::new(&canvas, 45); + */ canvas.start_events(tx); @@ -355,21 +360,28 @@ fn main() { thread::spawn(move || { loop { let deg = ((start.elapsed() / 25).as_millis() % 360) as i32; - let rot1 :TMatrix = rotate_z(deg) - * rotate_x(-deg*2) - * translate(Vector(0.0, 0.0, 150.0)); - let rot2 :TMatrix = rotate_z(-deg*2) - * rotate_y(deg) - * translate(Vector(0.0, 0.0, 150.0)); + let t = translate(Vector(0.0, 0.0, 150.0)); + let rz :TMatrix = rotate_z(deg); + /* + let t = translate(Vector( Fractional(0,1) + , Fractional(0,1) + , Fractional(150,1) )); + let rz :TMatrix = rotate_z(deg); + */ + + let rot1 = TMatrix::combine(vec!(rz, rotate_x(-deg*2), t)); + let rot2 = TMatrix::combine(vec!(rz, rotate_y(-deg*2), t)); + + let objects = vec!( (tetrahedron.transform(&rot1), 0xFFFF00) + , ( cube.transform(&rot2), 0x0000FF) ); canvas.clear(); - for pg in tetrahedron.transform(&rot1).project(&camera) { - canvas.draw(&pg, Coordinate(0,0), 0xFFFF00); - } - for pg in cube.transform(&rot2).project(&camera) { - canvas.draw(&pg, Coordinate(0,0), 0x0000FF); + for (o, color) in objects { + for pg in o.project(&camera) { + canvas.draw(&pg, Coordinate(0,0), color); + } } let passed = Instant::now() - last;