diff --git a/src/cgmath/aabb.rs b/src/cgmath/aabb.rs index 93578c6..57eec39 100644 --- a/src/cgmath/aabb.rs +++ b/src/cgmath/aabb.rs @@ -51,6 +51,11 @@ pub trait Aabb let mx : P = build(|i| self.max().i(i).max(p.i(i))); Aabb::new(&mn, &mx) } + + // Returns a new AABB that has its points translated by the given vector. + fn translate(&self, v: &V) -> Self { + Aabb::new(&self.min().add_v(v), &self.max().add_v(v)) + } } #[deriving(Clone, Eq)] diff --git a/src/test/aabb.rs b/src/test/aabb.rs index bf3b926..f58797e 100644 --- a/src/test/aabb.rs +++ b/src/test/aabb.rs @@ -35,4 +35,7 @@ fn test_aabb() { assert!(!aabb.contains(&Point3::new(10, 30, 5))); assert!(aabb.contains(&Point3::new(-20, -10, -5))); assert!(!aabb.contains(&Point3::new(-21, -11, -6))); + + assert_eq!(aabb.translate(&Vec3::new(1, 2, 3)), + Aabb3::new(&Point3::new(-19, 32, 8), &Point3::new(11, -8, -2))); }