diff --git a/src/matrix.rs b/src/matrix.rs index 3af0c0e..5dc87b9 100644 --- a/src/matrix.rs +++ b/src/matrix.rs @@ -8,6 +8,7 @@ // except according to those terms. use approxeq::ApproxEq; +use point::Point2D; use num::{One, Zero}; use num_lib::NumCast; @@ -80,6 +81,13 @@ impl + Copy + Clone + ApproxEq + Mul + One + self.m41.clone(), self.m42.clone(), self.m43.clone(), self.m44.clone()) } + /// Returns the given point transformed by this matrix. + #[inline] + pub fn transform_point(&self, p: &Point2D) -> Point2D { + Point2D(p.x * self.m11 + p.y * self.m21 + self.m41, + p.x * self.m12 + p.y * self.m22 + self.m42) + } + pub fn to_array(&self) -> [T; 16] { [ self.m11.clone(), self.m12.clone(), self.m13.clone(), self.m14.clone(),