9 个版本
新增 0.1.9 | 2024年8月19日 |
---|---|
0.1.8 | 2023年10月15日 |
0.1.7 | 2023年3月19日 |
0.1.6 | 2023年2月23日 |
0.1.1 | 2020年10月30日 |
在 数学 中排名 #205
每月下载量 123
26KB
317 行
uniform-cubic-splines
均匀三次样条插值与反演。
此 crate 支持以下类型的样条
- B-样条
- 贝塞尔
- Catmull-Rom
- Hermite
- 线性
- 幂
使用此 crate 对 1D、2D、3D 等进行插值,并使用具有非均匀节点间距和节点多重性的 1D Catmull-Rom 样条作为曲线小部件(使用 tiny-skia
绘制)。
此 crate 使用泛型,允许对具有某些特质的任何类型进行插值。
例如,您可以使用此 crate 对 1D、2D、3D 等进行样条插值。
[dependencies]
uniform-cubic-splines = { version = "0.1" }
示例
通过组合 spline()
和 spline_inverse()
,可以计算一个完整的非均匀横截面的样条
use uniform_cubic_splines::{
basis::CatmullRom, spline_inverse, spline,
};
// We want to evaluate the spline at knot value 0.3.
let x = 0.3;
// The first and last points are never interpolated.
let knot_spacing = [0.0, 0.0, 0.1, 0.3, 1.0, 1.0];
let knots = [0.0, 0.0, 1.3, 4.2, 3.2, 3.2];
let v = spline_inverse::<CatmullRom, _>(x, &knot_spacing, None, None).unwrap();
let y = spline::<CatmullRom, _, _>(v, &knots);
assert!(y - 4.2 < 1e-6);
功能
monotonic_check
-- 默认情况下启用,如果启用了unstable
功能,则该检查可以更快地进行。此检查可以在运行时检测monotonic_check
加速。unstable
-- 如果启用了monotonic_check
功能,则将更快,但需要nightly
工具链。std
-- 如果启用了monotonic_check
加速,则将在运行时检测到它。
背景
代码是 Rust 对 C++ 源代码中找到的 Open Shading Language 实现的移植。
如果您来自计算机图形/离线渲染中使用的着色语言背景,这个crate应该感觉就像家一样。
依赖项
~180KB