From ff9fc767d40e8a5d3bb1be7b721cf75f73ddc9b5 Mon Sep 17 00:00:00 2001 From: Risto Saarelma Date: Sat, 1 Feb 2014 10:12:27 +0200 Subject: [PATCH] Translate method for AABBs --- src/cgmath/aabb.rs | 5 +++++ src/test/aabb.rs | 3 +++ 2 files changed, 8 insertions(+) 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))); }