diff --git a/rtchallenge/examples/eoc1.rs b/rtchallenge/examples/eoc1.rs index c8f0110..cc1cfd8 100644 --- a/rtchallenge/examples/eoc1.rs +++ b/rtchallenge/examples/eoc1.rs @@ -1,4 +1,4 @@ -use rtchallenge::tuples::{point, vector, Tuple}; +use rtchallenge::tuples::Tuple; #[derive(Debug)] struct Environment { @@ -18,12 +18,12 @@ fn tick(env: &Environment, proj: &Projectile) -> Projectile { } fn main() { let mut p = Projectile { - position: point(0., 1., 0.), - velocity: 4. * vector(1., 1., 0.).normalize(), + position: Tuple::point(0., 1., 0.), + velocity: 4. * Tuple::vector(1., 1., 0.).normalize(), }; let e = Environment { - gravity: vector(0., -0.1, 0.).normalize(), - wind: vector(-0.01, 0., 0.), + gravity: Tuple::vector(0., -0.1, 0.).normalize(), + wind: Tuple::vector(-0.01, 0., 0.), }; let mut i = 0; diff --git a/rtchallenge/src/canvas.rs b/rtchallenge/src/canvas.rs index cfba39e..b1385ac 100644 --- a/rtchallenge/src/canvas.rs +++ b/rtchallenge/src/canvas.rs @@ -72,13 +72,13 @@ impl Canvas { } #[cfg(test)] mod tests { - use super::canvas; + use super::Canvas; use crate::tuples::Color; #[test] fn create_canvas() { - let c = canvas(10, 20); + let c = Canvas::new(10, 20); assert_eq!(c.width, 10); assert_eq!(c.height, 20); let black = Color::new(0., 0., 0.); @@ -89,7 +89,7 @@ mod tests { #[test] fn write_to_canvas() { - let mut c = canvas(10, 20); + let mut c = Canvas::new(10, 20); let red = Color::new(1., 0., 0.); c.set(2, 3, red); assert_eq!(c.get(2, 3), red); diff --git a/rtchallenge/src/tuples.rs b/rtchallenge/src/tuples.rs index ac4bd24..0f532d4 100644 --- a/rtchallenge/src/tuples.rs +++ b/rtchallenge/src/tuples.rs @@ -214,11 +214,11 @@ impl Sub for Color { mod tests { use float_cmp::approx_eq; - use super::{color, cross, dot, point, tuple, vector}; + use super::{cross, dot, Color, Tuple}; #[test] fn is_point() { // A tuple with w = 1 is a point - let a = tuple(4.3, -4.2, 3.1, 1.0); + let a = Tuple::new(4.3, -4.2, 3.1, 1.0); assert_eq!(a.x, 4.3); assert_eq!(a.y, -4.2); assert_eq!(a.z, 3.1); @@ -229,7 +229,7 @@ mod tests { #[test] fn is_vector() { // A tuple with w = 0 is a point - let a = tuple(4.3, -4.2, 3.1, 0.0); + let a = Tuple::new(4.3, -4.2, 3.1, 0.0); assert_eq!(a.x, 4.3); assert_eq!(a.y, -4.2); assert_eq!(a.z, 3.1); @@ -239,78 +239,81 @@ mod tests { } #[test] fn point_tuple() { - assert_eq!(point(4., -4., 3.), tuple(4., -4., 3., 1.)) + assert_eq!(Tuple::point(4., -4., 3.), Tuple::new(4., -4., 3., 1.)) } #[test] fn vector_tuple() { - assert_eq!(vector(4., -4., 3.), tuple(4., -4., 3., 0.)) + assert_eq!(Tuple::vector(4., -4., 3.), Tuple::new(4., -4., 3., 0.)) } #[test] fn add_two_tuples() { - let a1 = tuple(3., -2., 5., 1.); - let a2 = tuple(-2., 3., 1., 0.); - assert_eq!(a1 + a2, tuple(1., 1., 6., 1.)); + let a1 = Tuple::new(3., -2., 5., 1.); + let a2 = Tuple::new(-2., 3., 1., 0.); + assert_eq!(a1 + a2, Tuple::new(1., 1., 6., 1.)); } #[test] fn sub_two_points() { - let p1 = point(3., 2., 1.); - let p2 = point(5., 6., 7.); - assert_eq!(p1 - p2, vector(-2., -4., -6.)); + let p1 = Tuple::point(3., 2., 1.); + let p2 = Tuple::point(5., 6., 7.); + assert_eq!(p1 - p2, Tuple::vector(-2., -4., -6.)); } #[test] fn sub_vector_point() { - let p = point(3., 2., 1.); - let v = vector(5., 6., 7.); - assert_eq!(p - v, point(-2., -4., -6.)); + let p = Tuple::point(3., 2., 1.); + let v = Tuple::vector(5., 6., 7.); + assert_eq!(p - v, Tuple::point(-2., -4., -6.)); } #[test] fn sub_two_vectors() { - let v1 = vector(3., 2., 1.); - let v2 = vector(5., 6., 7.); - assert_eq!(v1 - v2, vector(-2., -4., -6.)); + let v1 = Tuple::vector(3., 2., 1.); + let v2 = Tuple::vector(5., 6., 7.); + assert_eq!(v1 - v2, Tuple::vector(-2., -4., -6.)); } #[test] fn sub_zero_vector() { - let zero = vector(0., 0., 0.); - let v = vector(1., -2., 3.); - assert_eq!(zero - v, vector(-1., 2., -3.)); + let zero = Tuple::vector(0., 0., 0.); + let v = Tuple::vector(1., -2., 3.); + assert_eq!(zero - v, Tuple::vector(-1., 2., -3.)); } #[test] fn negate_tuple() { - let a = tuple(1., -2., 3., -4.); - assert_eq!(-a, tuple(-1., 2., -3., 4.)); + let a = Tuple::new(1., -2., 3., -4.); + assert_eq!(-a, Tuple::new(-1., 2., -3., 4.)); } #[test] fn mul_tuple_scalar() { - let a = tuple(1., -2., 3., -4.); - assert_eq!(a * 3.5, tuple(3.5, -7., 10.5, -14.)); - assert_eq!(3.5 * a, tuple(3.5, -7., 10.5, -14.)); + let a = Tuple::new(1., -2., 3., -4.); + assert_eq!(a * 3.5, Tuple::new(3.5, -7., 10.5, -14.)); + assert_eq!(3.5 * a, Tuple::new(3.5, -7., 10.5, -14.)); } #[test] fn mul_tuple_fraction() { - let a = tuple(1., -2., 3., -4.); - assert_eq!(a * 0.5, tuple(0.5, -1., 1.5, -2.)); - assert_eq!(0.5 * a, tuple(0.5, -1., 1.5, -2.)); + let a = Tuple::new(1., -2., 3., -4.); + assert_eq!(a * 0.5, Tuple::new(0.5, -1., 1.5, -2.)); + assert_eq!(0.5 * a, Tuple::new(0.5, -1., 1.5, -2.)); } #[test] fn div_tuple_scalar() { - let a = tuple(1., -2., 3., -4.); - assert_eq!(a / 2., tuple(0.5, -1., 1.5, -2.)); + let a = Tuple::new(1., -2., 3., -4.); + assert_eq!(a / 2., Tuple::new(0.5, -1., 1.5, -2.)); } #[test] fn vector_magnitude() { - assert_eq!(1., vector(1., 0., 0.).magnitude()); - assert_eq!(1., vector(0., 1., 0.).magnitude()); - assert_eq!(1., vector(0., 0., 1.).magnitude()); - assert_eq!(14_f32.sqrt(), vector(1., 2., 3.).magnitude()); - assert_eq!(14_f32.sqrt(), vector(-1., -2., -3.).magnitude()); + assert_eq!(1., Tuple::vector(1., 0., 0.).magnitude()); + assert_eq!(1., Tuple::vector(0., 1., 0.).magnitude()); + assert_eq!(1., Tuple::vector(0., 0., 1.).magnitude()); + assert_eq!(14_f32.sqrt(), Tuple::vector(1., 2., 3.).magnitude()); + assert_eq!(14_f32.sqrt(), Tuple::vector(-1., -2., -3.).magnitude()); } #[test] fn vector_normalize() { - assert_eq!(vector(1., 0., 0.), vector(4., 0., 0.).normalize()); assert_eq!( - vector(1. / 14_f32.sqrt(), 2. / 14_f32.sqrt(), 3. / 14_f32.sqrt()), - vector(1., 2., 3.).normalize() + Tuple::vector(1., 0., 0.), + Tuple::vector(4., 0., 0.).normalize() + ); + assert_eq!( + Tuple::vector(1. / 14_f32.sqrt(), 2. / 14_f32.sqrt(), 3. / 14_f32.sqrt()), + Tuple::vector(1., 2., 3.).normalize() ); } #[test] @@ -318,53 +321,53 @@ mod tests { assert!(approx_eq!( f32, 1., - vector(1., 2., 3.).normalize().magnitude(), + Tuple::vector(1., 2., 3.).normalize().magnitude(), ulps = 1 )); } #[test] fn dot_two_tuples() { - let a = vector(1., 2., 3.); - let b = vector(2., 3., 4.); + let a = Tuple::vector(1., 2., 3.); + let b = Tuple::vector(2., 3., 4.); assert_eq!(20., dot(a, b)); } #[test] fn cross_two_tuples() { - let a = vector(1., 2., 3.); - let b = vector(2., 3., 4.); - assert_eq!(vector(-1., 2., -1.), cross(a, b)); - assert_eq!(vector(1., -2., 1.), cross(b, a)); + let a = Tuple::vector(1., 2., 3.); + let b = Tuple::vector(2., 3., 4.); + assert_eq!(Tuple::vector(-1., 2., -1.), cross(a, b)); + assert_eq!(Tuple::vector(1., -2., 1.), cross(b, a)); } #[test] fn color_rgb() { - let c = color(-0.5, 0.4, 1.7); + let c = Color::new(-0.5, 0.4, 1.7); assert_eq!(c.red, -0.5); assert_eq!(c.green, 0.4); assert_eq!(c.blue, 1.7); } #[test] fn add_color() { - let c1 = color(0.9, 0.6, 0.75); - let c2 = color(0.7, 0.1, 0.25); - assert_eq!(c1 + c2, color(0.9 + 0.7, 0.6 + 0.1, 0.75 + 0.25)); + let c1 = Color::new(0.9, 0.6, 0.75); + let c2 = Color::new(0.7, 0.1, 0.25); + assert_eq!(c1 + c2, Color::new(0.9 + 0.7, 0.6 + 0.1, 0.75 + 0.25)); } #[test] fn sub_color() { - let c1 = color(0.9, 0.6, 0.75); - let c2 = color(0.7, 0.1, 0.25); - assert_eq!(c1 - c2, color(0.9 - 0.7, 0.6 - 0.1, 0.75 - 0.25)); + let c1 = Color::new(0.9, 0.6, 0.75); + let c2 = Color::new(0.7, 0.1, 0.25); + assert_eq!(c1 - c2, Color::new(0.9 - 0.7, 0.6 - 0.1, 0.75 - 0.25)); } #[test] fn mul_color_scalar() { - let c = color(0.2, 0.3, 0.4); - assert_eq!(c * 2., color(0.2 * 2., 0.3 * 2., 0.4 * 2.)); - assert_eq!(2. * c, color(0.2 * 2., 0.3 * 2., 0.4 * 2.)); + let c = Color::new(0.2, 0.3, 0.4); + assert_eq!(c * 2., Color::new(0.2 * 2., 0.3 * 2., 0.4 * 2.)); + assert_eq!(2. * c, Color::new(0.2 * 2., 0.3 * 2., 0.4 * 2.)); } #[test] fn mul_colors() { - let c1 = color(1., 0.2, 0.4); - let c2 = color(0.9, 1., 0.1); - assert_eq!(c1 * c2, color(1.0 * 0.9, 0.2 * 1., 0.4 * 0.1)); + let c1 = Color::new(1., 0.2, 0.4); + let c2 = Color::new(0.9, 1., 0.1); + assert_eq!(c1 * c2, Color::new(1.0 * 0.9, 0.2 * 1., 0.4 * 0.1)); } }