multilateration 1.0.0

Library for performing a multilateration operation
Documentation
  • Coverage
  • 20%
    1 out of 5 items documented1 out of 5 items with examples
  • Size
  • Source code size: 19.76 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 1.97 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 23s Average build duration of successful builds.
  • all releases: 23s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • ebakoba/multilateration
    7 2 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • ebakoba

githubcrates-iodocs-rs

This is a multilateration library implemented in Rust, which is loosly based on Java trilateration library.

Details

  • It exposes one function that uses a vector of Measurement struct as an input. Output will be the tuple struct called Point which contains the output coordinates as a vector in the first tuple slot

    use multilateration::{multilaterate, Measurement, Point};
    
    fn main() -> Result<()> {
      let measurements = vec![
        Measurement::new(Point(vec![1.0, 1.0, 1.0]), 1.0),
        Measurement::new(Point(vec![3.0, 1.0, 1.0]), 1.0),
        Measurement::new(Point(vec![2.0, 2.0, 1.0]), 1.0),
      ];
    
      let coordinates = multilaterate(measurements).unwrap().0;
      println!("Coordinates are: {:?}", coordinates);
      Ok(())
    }
    
    Coordinates are: [2.0, 1.0000157132198315, 0.9943941804736127]
    

Error conditions

  • Points have different dimensions
  use multilateration::{multilaterate, Measurement, Point};

  fn main() -> Result<()> {
    let measurements = vec![
      Measurement::new(Point(vec![1.0, 1.0]), 1.0),
      Measurement::new(Point(vec![3.0, 1.0, 1.0]), 1.0),
      Measurement::new(Point(vec![2.0, 2.0, 1.0]), 1.0),
    ];

    let result = multilaterate(measurements);
    println!("Result is: {:?}", result);
    Ok(())
  }
Result is: Err(All points must have the same dimensions)
  • Points have no dimensions
  use multilateration::{multilaterate, Measurement, Point};

  fn main() -> Result<()> {
    let measurements = vec![
      Measurement::new(Point(vec![]), 1.0),
      Measurement::new(Point(vec![]), 1.0),
      Measurement::new(Point(vec![]), 1.0),
    ];

    let result = multilaterate(measurements);
    println!("Result is: {:?}", result);
    Ok(())
  }
Result is: Err(Points must contain at least one dimension)