1个不稳定发布
0.2.1 | 2022年9月27日 |
---|
#25 in #bezier
76KB
1.5K SLoC
nbezier
nbezier旨在成为处理任意次数贝塞尔曲线的通用库。
它使用nalgebra(因此得名)来实现通用的BezierCurve
。
此库还提供了一个非泛型类型SimpleCurve
,隐藏了nalgebra的复杂性。SimpleCurve
针对三次贝塞尔曲线进行了优化,同时支持任意次数。
当前功能
- 将曲线存储为控制点列表(确切地说是一个矩阵的列向量)
- De Castlejau算法
- 评估一个点
- 分割曲线
- 计算曲线的多项式及其导数
- 法向量和切向量
- 曲线的控制点轴对齐的边界框和凸包
- 提升或降低曲线的次数
实验性功能
- 在曲线上找到一个点
- 找到两条曲线之间的所有交点
计划功能
- 有什么建议吗?
SimpleCurve
是如何优化的?
使用nalgebra的BezierCurve
在其次数上是泛型的。SimpleCurve
是一个枚举,它在其4个变体中存储次数为1、2、3以及更高次数的曲线。由于这些低次数是它们的专用变体,具有专用类型,因此Rust可以在编译时计算大量的“魔法常数”。此外,这些次数的变体完全存储在堆栈上,这为它们提供了巨大的性能提升。
依赖项
~3MB
~57K SLoC