5 releases (breaking)

new 0.7.0 Oct 16, 2024
0.5.0 Feb 13, 2023
0.4.0 Dec 4, 2022
0.2.0 Oct 25, 2022
0.1.0 Aug 3, 2022

#13 in #points

Download history 17/week @ 2024-07-03 47/week @ 2024-07-10 62/week @ 2024-07-17 111/week @ 2024-07-24 68/week @ 2024-07-31 36/week @ 2024-08-07 62/week @ 2024-08-14 105/week @ 2024-08-21 107/week @ 2024-08-28 113/week @ 2024-09-04 74/week @ 2024-09-11 107/week @ 2024-09-18 48/week @ 2024-09-25 15/week @ 2024-10-02 13/week @ 2024-10-09 223/week @ 2024-10-16

310 downloads per month
Used in 3 crates (via roughr)

MIT license

43KB
437 lines

points_on_curve 〰️ 📌

Crates.io Documentation License

This crate is a rustlang port of points-on-curve npm package written by @pshihn.

This package exposes functions to sample points on a bezier curve with certain tolerance. There is also a utility funtion to simplify the shape to use fewer points. This can really be useful when estimating lines/polygons for curves in WebGL or for Hit/Collision detections. Reverse of this operation is also supported meaning given some points generate bezier curve points passing through this points

📦 Cargo.toml

[dependencies]
points_on_curve = "0.1"

🔧 Example

use euclid::{default, point2};
use points_on_curve::points_on_bezier_curves;

let input = vec![
        point2(70.0, 240.0),
        point2(145.0, 60.0),
        point2(275.0, 90.0),
        point2(300.0, 230.0),
    ];
let result_015 = points_on_bezier_curves(&input, 0.2, Some(0.15));

🖨️ Output

This picture shows computed points with 4 different distance values 0.15, 0.75, 1.5 and 3.0 with tolerance 2.0.

tolerance

🔭 Examples

For more examples have a look at the examples folder.

📝 License

Licensed under MIT License (LICENSE).

🚧 Contributions

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the MIT license, shall be licensed as above, without any additional terms or conditions.

Dependencies

~645KB
~15K SLoC