moved to relative float equivalence
This commit is contained in:
@@ -1,4 +1,18 @@
|
||||
#[macro_use]
|
||||
extern crate approx;
|
||||
|
||||
use std::f32;
|
||||
|
||||
type PointVector = (f32, f32, f32, f32);
|
||||
type Dimensions = (f32, f32, f32);
|
||||
|
||||
fn point(dims: Dimensions) -> PointVector {
|
||||
(dims.0, dims.1, dims.2, 1.0)
|
||||
}
|
||||
|
||||
fn vector(dims: Dimensions) -> PointVector {
|
||||
(dims.0, dims.1, dims.2, 0.0)
|
||||
}
|
||||
|
||||
fn tuple_x(tuple: PointVector) -> f32 {
|
||||
tuple.0
|
||||
@@ -13,10 +27,10 @@ fn tuple_z(tuple: PointVector) -> f32 {
|
||||
}
|
||||
|
||||
fn tuple_is_point(tuple: PointVector) -> bool {
|
||||
tuple.3 == 1.0
|
||||
relative_eq!(1.0, tuple.3)
|
||||
}
|
||||
fn tuple_is_vector(tuple: PointVector) -> bool {
|
||||
tuple.3 == 0.0
|
||||
relative_eq!(0.0, tuple.3)
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
@@ -27,21 +41,33 @@ mod tests {
|
||||
fn get_point() {
|
||||
let tuple = (4.3, -4.2, 3.1, 1.0);
|
||||
|
||||
assert_eq!( 4.3, tuple_x(tuple));
|
||||
assert_eq!(-4.2, tuple_y(tuple));
|
||||
assert_eq!( 3.1, tuple_z(tuple));
|
||||
assert_relative_eq!( 4.3, tuple_x(tuple));
|
||||
assert_relative_eq!(-4.2, tuple_y(tuple));
|
||||
assert_relative_eq!( 3.1, tuple_z(tuple));
|
||||
assert_eq!(true, tuple_is_point(tuple));
|
||||
assert_eq!(false, tuple_is_vector(tuple));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn create_point() {
|
||||
let point = point((4.0, -4.0, 3.0));
|
||||
assert_eq!(true, tuple_is_point(point));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn get_vector() {
|
||||
let tuple = (4.3, -4.2, 3.1, 0.0);
|
||||
|
||||
assert_eq!( 4.3, tuple_x(tuple));
|
||||
assert_eq!(-4.2, tuple_y(tuple));
|
||||
assert_eq!( 3.1, tuple_z(tuple));
|
||||
assert_relative_eq!( 4.3, tuple_x(tuple));
|
||||
assert_relative_eq!(-4.2, tuple_y(tuple));
|
||||
assert_relative_eq!( 3.1, tuple_z(tuple));
|
||||
assert_eq!(false, tuple_is_point(tuple));
|
||||
assert_eq!(true, tuple_is_vector(tuple));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn create_vector() {
|
||||
let vector = vector((4.0, -4.0, 3.0));
|
||||
assert_eq!(true, tuple_is_vector(vector));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user