From a2b72be2e005427e74beeaaade3ac7f7160afc7c Mon Sep 17 00:00:00 2001 From: Glenn Watson Date: Mon, 25 May 2015 08:00:36 +1000 Subject: [PATCH] Add method to transform 2d point by 4x4 matrix. --- src/matrix.rs | 8 ++++++++ 1 file changed, 8 insertions(+) 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(),