extern crate alga;
extern crate nalgebra as na;
use alga::linear::Transformation;
use na::{Id, Isometry3, Point3, Vector3};
fn complicated_algorithm<T>(v: &Vector3<f32>, t: &T, n: usize) -> Vector3<f32>
where T: Transformation<Point3<f32>> {
let mut result = *v;
for _ in 0..n {
result = v + t.transform_vector(&result);
}
result
}
fn main() {
let v = Vector3::new(1.0, 2.0, 3.0);
let result1 = complicated_algorithm(&v, &Id::new(), 100000);
let iso = Isometry3::identity();
let result2 = complicated_algorithm(&v, &iso, 100000);
assert!(result1 == Vector3::new(100001.0, 200002.0, 300003.0));
assert!(result2 == Vector3::new(100001.0, 200002.0, 300003.0));
}