From de6b5d40a658a6f525ced215c35264713e90a081 Mon Sep 17 00:00:00 2001 From: L <457124+liborty@users.noreply.github.com> Date: Wed, 3 Jan 2024 23:04:11 +1000 Subject: [PATCH] minor prune --- src/vecvecg.rs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/vecvecg.rs b/src/vecvecg.rs index e4d5149..f0ac5dc 100644 --- a/src/vecvecg.rs +++ b/src/vecvecg.rs @@ -186,22 +186,20 @@ impl VecVecg for &[Vec] /// Weighted sums of points in each hemisphere. /// Uses only the points specified in idx (e.g. the convex hull). - /// Self should normally be zero median vectors, i.e. `self.translate(&median)` - fn wsigvec(self, idx: &[usize], ws:&[U]) -> Result,RE> { - let mut wsum = 0_f64; + /// Self should normally be zero median vectors, i.e. `self.translate(&median)`. + /// The result is normalized to unit vector. + fn wsigvec(self, idx: &[usize], ws:&[U]) -> Result,RE> { let dims = self[0].len(); if self.len() != ws.len() { return re_error("DataError","wsigvec: weights number mismatch")?; }; let mut hemis = vec![0_f64; 2*dims]; for &i in idx { - let wf:f64 = ws[i].clone().into(); - wsum += wf; + let wf:f64 = ws[i].clone().into(); for (j,component) in self[i].iter().enumerate() { let cf:f64 = component.clone().into(); if cf < 0. { hemis[dims+j] -= wf*cf; } else { hemis[j] += wf*cf; }; }; }; - for hem in &mut hemis { *hem /= wsum; }; hemis.vunit() }