6 个版本 (破坏性)
0.5.0 | 2023 年 10 月 15 日 |
---|---|
0.4.0 | 2022 年 10 月 27 日 |
0.3.0 | 2022 年 10 月 25 日 |
0.2.1 | 2022 年 10 月 20 日 |
0.1.0 | 2022 年 10 月 6 日 |
#880 in 数学
190KB
526 行
simplify-polyline
JavaScript simplify-js 库的 Rust 移植版本。
示例
use simplify_polyline::*;
fn main() {
let points = [
Point { vec: [0.0, 0.0] }, Point { vec: [1.0, 1.0] },
Point { vec: [2.0, 2.0] }, Point { vec: [3.0, 3.0] },
Point { vec: [4.0, 4.0] }
];
// alternatively, use the point! macro
let points = [
point!(0.0, 0.0), point!(1.0, 1.0), point!(2.0, 2.0),
point!(3.0, 3.0), point!(4.0, 4.0)
];
// alternatively, use the points! macro
let points = points![(0.0, 0.0), (1.0, 1.0), (2.0, 2.0), (3.0, 3.0), (4.0, 4.0)];
// low-quality simplification (fast)
let new_points = simplify(&points, 1.0, false);
// low-quality simplification (slower)
let new_points = simplify(&points, 1.0, true);
}
特性
serde
,可选,默认为关闭。允许序列化和反序列化点。- 注意,这仅适用于某些维度和某些格式。请参阅文档以获取更多信息。
性能
在 AMD Ryzen 7 5800x 和 Pop!_OS 22.04 上进行测量。
测试用例 | simplify-polyline | simplify-js |
---|---|---|
1118 个点,低质量,容差 1 | 16.584 微秒 | 52.907 微秒 |
1118 个点,高质量,容差 1 | 26.989 微秒 | 85.653 微秒 |
1118 个点,低质量,容差 5 | 3.987 微秒 | 12.840 微秒 |
1118 个点,高质量,容差 5 | 19.497 微秒 | 57.901 微秒 |
73752 个点,低质量,容差 1 | 82.251 微秒 | 273.075 微秒 |
73752 个点,高质量,容差 1 | 1933.700 微秒 | 5376.344 微秒 |
73752 个点,低质量,容差 5 | 54.150 微秒 | 181.554 微秒 |
73752 个点,高质量,容差 5 | 1458.900 微秒 | 3921.569 微秒 |
贡献
测试
$ cargo test --all-features
或
$ cargo make test
基准测试
$ cargo bench --all-features
或
$ cargo make bench