eyros 2.0.0

multi-dimensional interval database
Documentation
use crate::point::Point;

pub fn pad<P> (xs: &Vec<P>, n: usize) -> Vec<P> where P: Point {
  let mut len = xs.len();
  if len == 0 {
    panic!["attempted to pad pivots from an empty source"];
  }
  let mut res = xs.clone();
  if len == 1 {
    let r = res[0];
    for _ in 1..n {
      res.push(r.clone());
    }
    return res
  }
  let slots = (n-len).min(len-1);
  for i in 0..slots {
    let k = slots-i-1;
    let j = k*len/slots;
    let x = res[j].midpoint_upper(&res[j+1]);
    res.insert(j+1, x);
    len += 1;
  }
  if res.len() == n { res }
  else { pad(&res, n) }
}