1个稳定版本
1.0.0 | 2021年11月12日 |
---|
#40 in #geography
16KB
319 行
多边定位
这是一个基于Rust的多边定位库,它松散地基于Java trilateration library。
许可
MIT
lib.rs
:
这是一个基于Rust的多边定位库,它松散地基于Java trilateration library。
详细信息
-
它公开了一个函数,该函数使用一个以
Measurement
结构体为输入的向量。输出将是名为Point
的元组结构,其中第一个元组槽包含输出坐标作为向量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]
错误条件
- 点具有不同的维度
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)
- 点没有维度
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)
依赖项
~1MB
~23K SLoC