From 75b65481794409647e08d46ae9485f272dad560d Mon Sep 17 00:00:00 2001 From: Brendan Zabarauskas Date: Sun, 13 Dec 2015 02:20:53 +1100 Subject: [PATCH 1/2] Remove ToComponents and CompositeTransform traits Fixes #274 # Conflicts: # src/transform.rs --- src/transform.rs | 36 ------------------------------------ tests/transform.rs | 13 ------------- 2 files changed, 49 deletions(-) diff --git a/src/transform.rs b/src/transform.rs index 32669fe..f39be2b 100644 --- a/src/transform.rs +++ b/src/transform.rs @@ -211,39 +211,3 @@ impl From> for Matrix4 { } impl Transform3 for AffineMatrix3 {} - -/// A trait that allows extracting components (rotation, translation, scale) -/// from an arbitrary transformations -pub trait ToComponents> where - // FIXME: Ugly type signatures - blocked by rust-lang/rust#24092 -

::Scalar: BaseFloat, -{ - /// Extract the (scale, rotation, translation) triple - fn decompose(&self) -> (P::Vector, R, P::Vector); -} - -pub trait ToComponents2>: ToComponents, R> {} -pub trait ToComponents3>: ToComponents, R> {} - -pub trait CompositeTransform>: Transform

+ ToComponents where - // FIXME: Ugly type signatures - blocked by rust-lang/rust#24092 -

::Scalar: BaseFloat, -{} - -pub trait CompositeTransform2>: Transform2 + ToComponents2 {} -pub trait CompositeTransform3>: Transform3 + ToComponents3 {} - -impl + Clone> ToComponents for Decomposed where - // FIXME: Ugly type signatures - blocked by rust-lang/rust#24092 -

::Scalar: BaseFloat, -{ - fn decompose(&self) -> (P::Vector, R, P::Vector) { - (P::Vector::one().mul_s(self.scale), self.rot.clone(), self.disp.clone()) - } -} - -impl + Clone> ToComponents2 for Decomposed, R> {} -impl + Clone> ToComponents3 for Decomposed, R> {} - -impl + Clone> CompositeTransform2 for Decomposed, R> {} -impl + Clone> CompositeTransform3 for Decomposed, R> {} diff --git a/tests/transform.rs b/tests/transform.rs index 6dce2cc..8fa558d 100644 --- a/tests/transform.rs +++ b/tests/transform.rs @@ -41,16 +41,3 @@ fn test_look_at() { let view_point = Point3::new(0.0f64, 1.0, 5.0); assert!(t.transform_point(point).approx_eq(&view_point)); } - -#[test] -fn test_components() { - let t = Decomposed { - scale: 1.5f64, - rot: Quaternion::new(0.5f64,0.5,0.5,0.5), - disp: Vector3::new(6.0f64,-7.0,8.0) - }; - let (scale, rot, disp) = t.decompose(); - assert_eq!(scale, Vector3::from_value(t.scale)); - assert_eq!(rot, t.rot); - assert_eq!(disp, t.disp); -} From adcb647dce8441359171b9080d2732f535db8c10 Mon Sep 17 00:00:00 2001 From: Brendan Zabarauskas Date: Sun, 13 Dec 2015 10:27:22 +1100 Subject: [PATCH 2/2] Update changelog --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 14e99a4..3a29da0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,11 @@ This project adheres to [Semantic Versioning](http://semver.org/). ### Removed - Remove redundant `Point::{min, max}` methods - these are now covered by the `Array::{min, max}` methods that were introduced in 0.5.0. +- Removed `ToComponents`, `ToComponents2`, and `ToComponents3`. If you were + relying on `ToComponents::decompose`, you can produce the same effect by + accessing the fields on `Decomposed` directly. To create the scale vector, + use: `Vector::from_value(transform.scale)`. +- Removed `CompositeTransform`, `CompositeTransform2`, and `CompositeTransform3`. ## [v0.6.0] - 2015-12-12