lib & tuples: use crate specific EPSILON definition.

This commit is contained in:
Bill Thiede 2021-07-16 16:49:55 -07:00
parent 83799a02a9
commit 4b0d882b84
2 changed files with 11 additions and 6 deletions

View File

@ -1,3 +1,6 @@
pub mod canvas;
pub mod matrices;
pub mod tuples;
/// Value considered close enough for PartialEq implementations.
pub const EPSILON: f32 = 0.00001;

View File

@ -1,5 +1,7 @@
use std::ops::{Add, Div, Mul, Neg, Sub};
use crate::EPSILON;
#[derive(Debug, Copy, Clone)]
pub struct Tuple {
pub x: f32,
@ -116,10 +118,10 @@ impl Sub for Tuple {
impl PartialEq for Tuple {
fn eq(&self, rhs: &Tuple) -> bool {
((self.x - rhs.x).abs() < f32::EPSILON)
&& ((self.y - rhs.y).abs() < f32::EPSILON)
&& ((self.z - rhs.z).abs() < f32::EPSILON)
&& ((self.w - rhs.w).abs() < f32::EPSILON)
((self.x - rhs.x).abs() < EPSILON)
&& ((self.y - rhs.y).abs() < EPSILON)
&& ((self.z - rhs.z).abs() < EPSILON)
&& ((self.w - rhs.w).abs() < EPSILON)
}
}
pub fn dot(a: Tuple, b: Tuple) -> f32 {
@ -221,7 +223,7 @@ impl Sub for Color {
#[cfg(test)]
mod tests {
use super::{cross, dot, Color, Tuple};
use super::{cross, dot, Color, Tuple, EPSILON};
#[test]
fn is_point() {
// A tuple with w = 1 is a point
@ -326,7 +328,7 @@ mod tests {
#[test]
fn vector_normalize_magnitude() {
let len = Tuple::vector(1., 2., 3.).normalize().magnitude();
assert!((1. - len).abs() < f32::EPSILON);
assert!((1. - len).abs() < EPSILON);
}
#[test]
fn dot_two_tuples() {