15次发布

0.7.3 2024年7月6日
0.7.2 2023年6月10日
0.7.1 2023年4月12日
0.7.0 2023年2月27日
0.1.0 2018年3月17日

#6 in 渲染

Download history 284/week @ 2024-05-03 387/week @ 2024-05-10 485/week @ 2024-05-17 390/week @ 2024-05-24 439/week @ 2024-05-31 430/week @ 2024-06-07 588/week @ 2024-06-14 851/week @ 2024-06-21 541/week @ 2024-06-28 460/week @ 2024-07-05 544/week @ 2024-07-12 538/week @ 2024-07-19 493/week @ 2024-07-26 499/week @ 2024-08-02 568/week @ 2024-08-09 378/week @ 2024-08-16

2,038 每月下载量
用于 35 个crate(15个直接)

Apache-2.0

1MB
7.5K SLoC

flo_curves = "0.7"

flo_curves

flo_curves 是一个用于检查和操作曲线的库,重点在于三次贝塞尔曲线。在这个库中,您可以找到计算曲线上的点、在曲线和直线或其他曲线之间执行碰撞检测、以及组合由多个曲线组成的路径的例程。

任何与贝塞尔曲线相关的工作都可能会在这个库中找到有用的功能,但其函数范围使其在碰撞检测或执行路径算术方面特别有用。

库提供了一组曲线和坐标类型,以及可以应用于任何具有合适属性的类型的特剧行为。实现这些特性使得将库的额外功能添加到任何具有自己坐标、曲线或路径表示方式的现有代码成为可能。

示例

创建曲线

use flo_curves::*;
use flo_curves::bezier;

let curve = bezier::Curve::from_points(Coord2(1.0, 2.0), (Coord2(2.0, 0.0), Coord2(3.0, 5.0)), Coord2(4.0, 2.0));

在曲线上找到点

use flo_curves::bezier;

let pos = curve.point_at_pos(0.5);

交点

use flo_curves::bezier;

for (t1, t2) in bezier::curve_intersects_curve_clip(curve1, curve2, 0.01) {
    let pos = curve1.point_at_pos(t1);
    println!("Intersection, curve1 t: {}, curve2 t: {}, position: {}, {}", t1, t2, pos.x(), pos.y());
}

创建路径

use flo_curves::bezier;
use flo_curves::bezier::path::*;

let rectangle1 = BezierPathBuilder::<SimpleBezierPath>::start(Coord2(1.0, 1.0))
    .line_to(Coord2(5.0, 1.0))
    .line_to(Coord2(5.0, 5.0))
    .line_to(Coord2(1.0, 5.0))
    .line_to(Coord2(1.0, 1.0))
    .build();

路径算术

use flo_curves::bezier::path::*;

let rectangle_with_hole = path_sub::<SimpleBezierPath>(&vec![rectangle], &vec![circle], 0.01);

flo_curves logo

依赖项