Udated to latest Rust: TotalOrd/min/max changes
This commit is contained in:
parent
ba9aa12072
commit
385c3d7de8
2 changed files with 11 additions and 10 deletions
|
@ -21,7 +21,9 @@ use array::build;
|
|||
use std::fmt;
|
||||
use std::num::{zero, one};
|
||||
use std::iter::Iterator;
|
||||
use std::cmp::{max, min};
|
||||
|
||||
fn _min<S: Ord>(a: S, b: S) -> S { if a < b { a } else { b }}
|
||||
fn _max<S: Ord>(a: S, b: S) -> S { if a > b { a } else { b }}
|
||||
|
||||
pub trait Aabb
|
||||
<
|
||||
|
@ -49,8 +51,8 @@ pub trait Aabb
|
|||
|
||||
// Returns a new AABB that is grown to include the given point.
|
||||
fn grow(&self, p: &P) -> Self {
|
||||
let min : P = build(|i| min(self.min().i(i).clone(), p.i(i).clone()));
|
||||
let max : P = build(|i| max(self.max().i(i).clone(), p.i(i).clone()));
|
||||
let min : P = build(|i| _min(*self.min().i(i), *p.i(i)));
|
||||
let max : P = build(|i| _max(*self.max().i(i), *p.i(i)));
|
||||
Aabb::new(min, max)
|
||||
}
|
||||
|
||||
|
@ -81,8 +83,8 @@ impl<S: Num + Ord + Clone> Aabb2<S> {
|
|||
#[inline]
|
||||
pub fn new(p1: Point2<S>, p2: Point2<S>) -> Aabb2<S> {
|
||||
Aabb2 {
|
||||
min: Point2::new(min(p1.x.clone(), p2.x.clone()), min(p1.y.clone(), p2.y.clone())),
|
||||
max: Point2::new(max(p1.x.clone(), p2.x.clone()), max(p1.y.clone(), p2.y.clone())),
|
||||
min: Point2::new(_min(p1.x.clone(), p2.x.clone()), _min(p1.y.clone(), p2.y.clone())),
|
||||
max: Point2::new(_max(p1.x.clone(), p2.x.clone()), _max(p1.y.clone(), p2.y.clone())),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -110,8 +112,8 @@ impl<S: Num + Ord + Clone> Aabb3<S> {
|
|||
#[inline]
|
||||
pub fn new(p1: Point3<S>, p2: Point3<S>) -> Aabb3<S> {
|
||||
Aabb3 {
|
||||
min: Point3::new(min(p1.x.clone(), p2.x.clone()), min(p1.y.clone(), p2.y.clone()), min(p1.z.clone(), p2.z.clone())),
|
||||
max: Point3::new(max(p1.x.clone(), p2.x.clone()), max(p1.y.clone(), p2.y.clone()), max(p1.z.clone(), p2.z.clone())),
|
||||
min: Point3::new(_min(p1.x.clone(), p2.x.clone()), _min(p1.y.clone(), p2.y.clone()), _min(p1.z.clone(), p2.z.clone())),
|
||||
max: Point3::new(_max(p1.x.clone(), p2.x.clone()), _max(p1.y.clone(), p2.y.clone()), _max(p1.z.clone(), p2.z.clone())),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
|
||||
use std::fmt;
|
||||
use std::num::{Zero, zero, One, one, sqrt};
|
||||
use std::cmp::{max, min};
|
||||
|
||||
use angle::{Rad, atan2, acos};
|
||||
use approx::ApproxEq;
|
||||
|
@ -69,10 +68,10 @@ pub trait Vector
|
|||
#[inline] fn dot(&self, other: &Self) -> S { self.mul_v(other).comp_add() }
|
||||
|
||||
/// The minimum component of the vector.
|
||||
#[inline] fn comp_min(&self) -> S { self.fold(|a, b| min(a.clone(), b.clone())) }
|
||||
#[inline] fn comp_min(&self) -> S { self.fold(|a, b| if *a < *b { *a } else {*b }) }
|
||||
|
||||
/// The maximum component of the vector.
|
||||
#[inline] fn comp_max(&self) -> S { self.fold(|a, b| max(a.clone(), b.clone())) }
|
||||
#[inline] fn comp_max(&self) -> S { self.fold(|a, b| if *a > *b { *a } else {*b }) }
|
||||
}
|
||||
|
||||
#[inline] pub fn dot<S: Primitive, Slice, V: Vector<S, Slice>>(a: V, b: V) -> S { a.dot(&b) }
|
||||
|
|
Loading…
Reference in a new issue