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 344
345 345 let tetrahedron = Polyeder::tetrahedron(60.0);
346 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 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 355 canvas.start_events(tx);
351 356
... ... @@ -355,21 +360,28 @@ fn main() {
355 360 thread::spawn(move || {
356 361 loop {
357 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 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 387 let passed = Instant::now() - last;
... ...
Please register or login to post a comment