Commit 561f75cd4a080608a94c26319ffaf2eee9cac095
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