Browse Source

Vector code now works with Fractions .. but slower

master
Georg Hopp 6 years ago
parent
commit
561f75cd4a
Signed by: ghopp GPG Key ID: 4C5D226768784538
  1. 36
      fractional/src/main.rs

36
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::<f64>::new(&canvas, 40); // the orig. view angle
let camera = Camera::<f64>::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::<Fractional>::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<f64> = rotate_z(deg)
* rotate_x(-deg*2)
* translate(Vector(0.0, 0.0, 150.0));
let rot2 :TMatrix<f64> = 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<f64> = rotate_z(deg);
/*
let t = translate(Vector( Fractional(0,1)
, Fractional(0,1)
, Fractional(150,1) ));
let rz :TMatrix<Fractional> = 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;

Loading…
Cancel
Save