From 4936839723191510851312d8f9b21514afec9b35 Mon Sep 17 00:00:00 2001 From: Bill Thiede Date: Thu, 22 Jul 2021 21:34:18 -0700 Subject: [PATCH] prelude: create prelude and add some tuple helpers to it. --- rtchallenge/src/lib.rs | 4 ++++ rtchallenge/src/tuples.rs | 26 ++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/rtchallenge/src/lib.rs b/rtchallenge/src/lib.rs index d02e1b0..54fc30d 100644 --- a/rtchallenge/src/lib.rs +++ b/rtchallenge/src/lib.rs @@ -37,3 +37,7 @@ pub mod float { } pub use float::Float; + +pub mod prelude { + pub use crate::tuples::{point, vector, Color}; +} diff --git a/rtchallenge/src/tuples.rs b/rtchallenge/src/tuples.rs index 04f7f5f..ecd9848 100644 --- a/rtchallenge/src/tuples.rs +++ b/rtchallenge/src/tuples.rs @@ -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,