用于生成三次样条轨迹的库(不是插值)?

时间:2010-12-06 00:00:36

标签: algorithm geometry spline

一点背景。我有一个模拟,使用三维样条曲线进行一维轨迹。在此上下文中,三次样条曲线将对象的位置,速度,加速度和加加速度指定为时间的函数。

如果你有:

  • 的初始值和最终值 位置,速度,加速度和 时间
  • 恒定值约束 最大和最小速度, 加速,和混蛋

然后有一个独特的样条曲线。如果您没有指定最终时间,而是想要最小时间轨迹,那么还有一个独特的样条曲线。

然而,实际上找到这些样条可能是一种巨大的痛苦。在指定时间的情况下,样条曲线将包含最多7个多项式,并且结点(多项式之间的过渡点)不会提前知道。

这不是将样条拟合到一组数据的常见情况,它是根据边界条件和一些其他约束创建样条曲线。我读过人们使用类似安排并且有类似需求的论文,但我从来没有发现任何库(甚至是源代码)来处理这种类型的样条。我编写了一些处理大多数情况的代码,但它并不是非常强大或快速。我不是很担心它的速度很快,但是更强大会很棒。

是否有可以执行此操作的库?开源代码,即使不是作为库构建的? C,C ++,Java或Python是首选,但如果它是开源的,其他语言仍然可用作参考。

3 个答案:

答案 0 :(得分:1)

有一个C ++的升级库是开源的,可能会让你在那里中途。

它具有您需要的所有基本构建块(Legrendre / Laguerre / Hermite多项式,根寻找等等),尽管它实际上没有计算样条曲线。

图书馆文档在这里,您可以自己检查:http://www.boost.org/doc/libs/1_45_0/libs/math/doc/html/index.html

答案 1 :(得分:1)

样条函数的问题在于您必须求解联立线性方程以解决条件。如果您的情况有关于某些衍生物的更多信息,您可以使用Piecewise Cubic Hermite Interpolation(PCHIP)。

例如,不是定义jerk必须为零,而是可以提出不同的约束,使用PCHIP,并贪婪地解决您的问题。无论如何,即使你这次不能使用它,也要记住它。

http://www.mathworks.com/moler/interp.pdf

答案 2 :(得分:0)

SciPy's interpolation functions可能有帮助......另外你可以轻松获得这些样条的衍生物或积分......我不确定你为什么说“不插值”......在我看来,就像那样你想要完成什么。