From 908da3d995754c79b6f93bf3544affbec941d81a Mon Sep 17 00:00:00 2001 From: Matthew Gordon Date: Sat, 29 Mar 2025 15:13:40 -0300 Subject: [PATCH] Add Vec4::xyz() --- src/math/vec4.rs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/math/vec4.rs b/src/math/vec4.rs index c9bc66d..a409c9e 100644 --- a/src/math/vec4.rs +++ b/src/math/vec4.rs @@ -1,4 +1,4 @@ -use super::Float; +use super::{Float, Vec3}; use itertools::izip; @@ -32,6 +32,12 @@ impl Vec4 { self.coords[3] } + pub fn xyz(&self) -> Vec3 { + let mut coords = [T::zero(); 3]; + coords.copy_from_slice(&self.coords[0..3]); + Vec3 { coords } + } + pub fn dot(&self, rhs: &Vec4) -> T { self.coords .iter() @@ -138,6 +144,14 @@ mod tests { assert!(target.w() == 4.0); } + #[test] + fn xyz_returns_expected_value() { + let target = Vec4::new(1.0, 2.0, 3.0, 4.0).xyz(); + assert!(target.x() == 1.0); + assert!(target.y() == 2.0); + assert!(target.z() == 3.0); + } + #[test] fn dot_product_returns_correct_result() { let a = Vec4::new(1.0, 2.0, 3.0, 4.0);