|
|
|
@ -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 (o, color) in objects {
|
|
|
|
for pg in o.project(&camera) {
|
|
|
|
canvas.draw(&pg, Coordinate(0,0), color);
|
|
|
|
}
|
|
|
|
for pg in cube.transform(&rot2).project(&camera) {
|
|
|
|
canvas.draw(&pg, Coordinate(0,0), 0x0000FF);
|
|
|
|
}
|
|
|
|
|
|
|
|
let passed = Instant::now() - last;
|
|
|
|
|