#polyline #geometry #graphics #simplify #simplify-js

simplify-polyline

使用 Douglas-Peucker 和径向距离算法简化折线。simplify-js 库的移植版本。

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 数学

MIT 许可证

190KB
526

simplify-polyline

crates.io latest version crates.io total downloads docs.rs status

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

依赖项