Commit 561f75cd4a080608a94c26319ffaf2eee9cac095

Authored by Georg Hopp
1 parent 3e231c24

Vector code now works with Fractions .. but slower

Showing 1 changed file with 24 additions and 12 deletions
@@ -344,8 +344,13 @@ fn main() { @@ -344,8 +344,13 @@ fn main() {
344 344
345 let tetrahedron = Polyeder::tetrahedron(60.0); 345 let tetrahedron = Polyeder::tetrahedron(60.0);
346 let cube = Polyeder::cube(60.0); 346 let cube = Polyeder::cube(60.0);
347 - let camera = Camera::<f64>::new(&canvas, 40); // the orig. view angle 347 + let camera = Camera::<f64>::new(&canvas, 45); // the orig. view angle
348 // was 50. 348 // was 50.
  349 + /*
  350 + let tetrahedron = Polyeder::tetrahedron(Fractional(60,1));
  351 + let cube = Polyeder::cube(Fractional(60,1));
  352 + let camera = Camera::<Fractional>::new(&canvas, 45);
  353 + */
349 354
350 canvas.start_events(tx); 355 canvas.start_events(tx);
351 356
@@ -355,21 +360,28 @@ fn main() { @@ -355,21 +360,28 @@ fn main() {
355 thread::spawn(move || { 360 thread::spawn(move || {
356 loop { 361 loop {
357 let deg = ((start.elapsed() / 25).as_millis() % 360) as i32; 362 let deg = ((start.elapsed() / 25).as_millis() % 360) as i32;
358 - let rot1 :TMatrix<f64> = rotate_z(deg)  
359 - * rotate_x(-deg*2)  
360 - * translate(Vector(0.0, 0.0, 150.0));  
361 363
362 - let rot2 :TMatrix<f64> = rotate_z(-deg*2)  
363 - * rotate_y(deg)  
364 - * translate(Vector(0.0, 0.0, 150.0)); 364 + let t = translate(Vector(0.0, 0.0, 150.0));
  365 + let rz :TMatrix<f64> = rotate_z(deg);
  366 + /*
  367 + let t = translate(Vector( Fractional(0,1)
  368 + , Fractional(0,1)
  369 + , Fractional(150,1) ));
  370 + let rz :TMatrix<Fractional> = rotate_z(deg);
  371 + */
  372 +
  373 + let rot1 = TMatrix::combine(vec!(rz, rotate_x(-deg*2), t));
  374 + let rot2 = TMatrix::combine(vec!(rz, rotate_y(-deg*2), t));
  375 +
  376 + let objects = vec!( (tetrahedron.transform(&rot1), 0xFFFF00)
  377 + , ( cube.transform(&rot2), 0x0000FF) );
365 378
366 canvas.clear(); 379 canvas.clear();
367 380
368 - for pg in tetrahedron.transform(&rot1).project(&camera) {  
369 - canvas.draw(&pg, Coordinate(0,0), 0xFFFF00);  
370 - }  
371 - for pg in cube.transform(&rot2).project(&camera) {  
372 - canvas.draw(&pg, Coordinate(0,0), 0x0000FF); 381 + for (o, color) in objects {
  382 + for pg in o.project(&camera) {
  383 + canvas.draw(&pg, Coordinate(0,0), color);
  384 + }
373 } 385 }
374 386
375 let passed = Instant::now() - last; 387 let passed = Instant::now() - last;
Please register or login to post a comment