From 6e3860f232b99c4150f03ba4769b314ce415b6a3 Mon Sep 17 00:00:00 2001 From: Brendan Zabarauskas Date: Tue, 10 Sep 2013 14:49:53 +1000 Subject: [PATCH] Remove util::half --- src/cgmath/matrix.rs | 26 +++++++++++++------------- src/cgmath/util.rs | 2 -- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/src/cgmath/matrix.rs b/src/cgmath/matrix.rs index 7e20fd0..edeb263 100644 --- a/src/cgmath/matrix.rs +++ b/src/cgmath/matrix.rs @@ -15,13 +15,12 @@ //! Column major, square matrix types and traits. -use std::num::{Zero, zero, One, one, sqrt}; +use std::num::{Zero, zero, One, one, cast, sqrt}; use angle::{Rad, sin, cos}; use array::Array; use quaternion::{Quat, ToQuat}; use vector::*; -use util::half; /// A 2 x 2, column major matrix #[deriving(Clone, Eq, Zero)] @@ -609,38 +608,39 @@ impl ToQuat for Mat3 { // Implemented using a mix of ideas from jMonkeyEngine and Ken Shoemake's // paper on Quaternions: http://www.cs.ucr.edu/~vbz/resources/Quatut.pdf let trace = self.trace(); + let half: S = cast(0.5); cond! ( (trace >= zero::()) { let s = sqrt(one::() + trace); - let w = half::() * s; - let s = half::() / s; + let w = half * s; + let s = half / s; let x = (*self.cr(1, 2) - *self.cr(2, 1)) * s; let y = (*self.cr(2, 0) - *self.cr(0, 2)) * s; let z = (*self.cr(0, 1) - *self.cr(1, 0)) * s; Quat::new(w, x, y, z) } ((*self.cr(0, 0) > *self.cr(1, 1)) && (*self.cr(0, 0) > *self.cr(2, 2))) { - let s = sqrt(half::() + (*self.cr(0, 0) - *self.cr(1, 1) - *self.cr(2, 2))); - let w = half::() * s; - let s = half::() / s; + let s = sqrt(half + (*self.cr(0, 0) - *self.cr(1, 1) - *self.cr(2, 2))); + let w = half * s; + let s = half / s; let x = (*self.cr(0, 1) - *self.cr(1, 0)) * s; let y = (*self.cr(2, 0) - *self.cr(0, 2)) * s; let z = (*self.cr(1, 2) - *self.cr(2, 1)) * s; Quat::new(w, x, y, z) } (*self.cr(1, 1) > *self.cr(2, 2)) { - let s = sqrt(half::() + (*self.cr(1, 1) - *self.cr(0, 0) - *self.cr(2, 2))); - let w = half::() * s; - let s = half::() / s; + let s = sqrt(half + (*self.cr(1, 1) - *self.cr(0, 0) - *self.cr(2, 2))); + let w = half * s; + let s = half / s; let x = (*self.cr(0, 1) - *self.cr(1, 0)) * s; let y = (*self.cr(1, 2) - *self.cr(2, 1)) * s; let z = (*self.cr(2, 0) - *self.cr(0, 2)) * s; Quat::new(w, x, y, z) } _ { - let s = sqrt(half::() + (*self.cr(2, 2) - *self.cr(0, 0) - *self.cr(1, 1))); - let w = half::() * s; - let s = half::() / s; + let s = sqrt(half + (*self.cr(2, 2) - *self.cr(0, 0) - *self.cr(1, 1))); + let w = half * s; + let s = half / s; let x = (*self.cr(2, 0) - *self.cr(0, 2)) * s; let y = (*self.cr(1, 2) - *self.cr(2, 1)) * s; let z = (*self.cr(0, 1) - *self.cr(1, 0)) * s; diff --git a/src/cgmath/util.rs b/src/cgmath/util.rs index 2e85022..4925bfe 100644 --- a/src/cgmath/util.rs +++ b/src/cgmath/util.rs @@ -20,5 +20,3 @@ use std::num::one; #[inline] pub fn two() -> T { one::() + one::() } -#[inline] -pub fn half() -> T { one::() / two::() }