prelude: create prelude and add some tuple helpers to it.

This commit is contained in:
Bill Thiede 2021-07-22 21:34:18 -07:00
parent c500d56d4d
commit 4936839723
2 changed files with 30 additions and 0 deletions

View File

@ -37,3 +37,7 @@ pub mod float {
}
pub use float::Float;
pub mod prelude {
pub use crate::tuples::{point, vector, Color};
}

View File

@ -2,6 +2,32 @@ use std::ops::{Add, Div, Mul, Neg, Sub};
use crate::{Float, EPSILON};
/// Short hand for creating a Tuple that represents a point, w=1.
///
/// # Examples
/// ```
/// use rtchallenge::tuples::{point, Tuple};
///
/// assert_eq!(point(1., 2., 3.), Tuple::point(1., 2., 3.));
/// assert_eq!(point(1., 2., 3.), Tuple::new(1., 2., 3., 1.));
/// ```
pub fn point(x: Float, y: Float, z: Float) -> Tuple {
Tuple::point(x, y, z)
}
/// Short hand for creating a Tuple that represents a vector, w=0.
///
/// # Examples
/// ```
/// use rtchallenge::tuples::{vector, Tuple};
///
/// assert_eq!(vector(1., 2., 3.), Tuple::vector(1., 2., 3.));
/// assert_eq!(vector(1., 2., 3.), Tuple::new(1., 2., 3., 0.));
/// ```
pub fn vector(x: Float, y: Float, z: Float) -> Tuple {
Tuple::vector(x, y, z)
}
#[derive(Debug, Default, Copy, Clone)]
pub struct Tuple {
pub x: Float,