#curve #fitting #spline #spline-interpolation #interpolation #smoothing

sys dirckx-sys

Dierckx' B-Splines 曲线和曲面 Fortran 库的 Rust 包装器

1 个不稳定版本

0.1.0 2021年12月27日

#5 in #fitting


用于 splinify

MIT/Apache

255KB
3.5K SLoC

FORTRAN Legacy 3.5K SLoC // 0.5% comments Rust 126 SLoC // 0.1% comments

Dierckx: B-Splines 曲线和曲面拟合

Dierckx 是一个 Fortran 库,用于将 B-Splines 曲线和曲面拟合到数据点集。它由 Paul Dierckx 在 1980 年代中期编写,至今仍然是功能最强大的通用 B-spline 拟合库。它基于坚实的数学基础,实现了许多高级算法,并在 Paul Dierckx 的书中进行了详细描述: Curve and Surface Fitting with Splines.

用法

要使用此库,您需要在您的系统上安装 Fortran 编译器:具体来说,目前需要安装 Gnu Fortran GFortran 编译器。有关如何在您的机器上完成此操作,请参阅 安装 GFortran

需要安装 Fortran 编译器是一个很大的限制,因此我建议不要将此 crate 作为大型项目中的依赖项使用。

Fortran 文件位于 src/netlib-dierckx 目录中,并于 2021 年 10 月 12 日从 netlib.org 服务器下载。代码进行了修改以消除一些警告,特别是将浮点数相等比较替换为 abs(f)<epsilon(f) 模式,当检查 0.0 值时,以及 abs(fa-fb)<epsilon(fa)-模式,以检查两个 REAL 数字的相等性。文件使用 REAL 精度的浮点值,但使用 -fdefault-real-8 gfortran 编译器标志转换为 Rust f64 值。原始 Fortran 文件未定义任何双精度值。

使用 build.rs 脚本执行 Fortran 编译,该脚本使用 cc crate 和 gfortran 编译器,并设置以下编译器标志

  • -std=legacy
  • -fdefault-real-8 将所有单精度浮点数转换为 f64
  • -Wno-maybe-uninitialized
  • -O3 gfortran的最高优化

要使用此库,请将其添加到您的Cargo.toml文件中

[dependencies]
dierckx-sys = "0.1.0"

有关进一步说明和示例,请参阅单独的dierckx crate。

许可证

包含在本存储库中的Dierckx Fortran代码是从netlib.org下载的,没有许可证限制,但请在您的项目中承认Paul Dierckx的工作和库。

本存储库中的所有其他内容均为©2021 Harbers Bik LLC版权所有,并受以下任一许可证的许可:

任选其一。

贡献

除非您明确表示,否则根据Apache-2.0许可证定义的您有意提交的任何贡献,均将按上述方式双许可,不附加任何其他条款或条件。

依赖项

~225KB