一点背景。我有一个使用三次样条曲线进行一维轨迹的模拟。在此上下文中,三次样条将对象的位置、速度、加速度和加加速度指定为时间的函数。
如果你有:
- 初始值和最终值 位置、速度、加速度和 时间
- 常数值约束 最大和最小速度, 加速度和 SCSS
然后有一个独特的样条。如果你不指定最终时间,而是想要最小时间的轨迹,那么也有一个唯一的样条。
不过,实际上找到这些样条曲线可能是一件非常痛苦的事情。在指定时间的情况下,样条将由最多 7 个多项式组成,并且节点(多项式之间的过渡点)无法提前知晓。
这不是将样条拟合到一组数据的常见情况,它是根据边界条件和一些附加约束创建样条。我读过人们使用类似安排并有类似需求的论文,但我从未找到任何库(甚至源代码)来解决生成此类样条的问题。我已经编写了一些处理大多数情况的代码,但它不是非常健壮或快速。我不是很担心它会很快,但更健壮会很棒。
是否有任何图书馆可以做到这一点?开源代码,即使不是作为库构建?首选 C、C++、Java 或 Python,但如果它是开源的,其他语言作为引用仍然有用。
最佳答案
有一个用于 C++ 的开源 boost 库,它可能会帮助您完成一半。
我认为它具有您需要的所有基本构建 block (Legrendre/Laguerre/Hermite 多项式、求根等...),尽管它缺少实际计算样条曲线的功能。
库文档在这里,您可以自己查看:http://www.boost.org/doc/libs/1_45_0/libs/math/doc/html/index.html
关于algorithm - 用于生成三次样条轨迹(不是插值)的库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4362118/