本文参考老张在上海轨迹规划 之 三次样条曲线(概念+性质) - 知乎 (zhihu.com)

  • 什么是三次样条曲线 之 三次

样条是一种数据插值的方式,在多项式插值中,多项式是给出的单一公式来尽可能满足所有的数据点,而样条则使用多个公式,每个公式都是低阶多项式,其能够保证通过所有的数据点。

  • 什么是三次样条曲线 之 样条

早期工程师制图时,把富有弹性的细长木条(所谓样条)用压铁固定在采样点上,在其他地方让它自由弯曲,然后沿木条画下曲线,称为样条曲线。

  • 什么是三次样条曲线 之 曲线

在样条两个采样点之间自由弯曲的线段则为曲线段。求解三次样条曲线的本质就是求解两两采样点之间的曲线段表达公式。

三次样条曲线理解

我的理解就是三次样条曲线与多项式插值不同的是,多项式插值始终是一个多项式对路径点的拟合,三次样条曲线对每两个点之间都有一个多项式(三次多项式)。而cubic_spline就是通过一些性质和定义,来求解每两个点之间的多项式。

直观体现

如下分别是一次样条曲线,二次样条曲线和三次样条曲线。

我们可以看到对于一次样条曲线就是线性线段的连接。

三次样条曲线的性质:

这个很重要,因为三次样条曲线的推导就是根据几个性质来完成推导的。

1.三次样条曲线在纽结处连续。

2.三次样条曲线在纽结处斜率相同。

3.三次样条曲线在纽结处曲率相同。

4.三次自然样条端点条件。

5.斜率调整三次样条曲线/钳制三次样条(给定初始速度,终点速度)端点条件。

6.曲率调整三次样条曲线(给定初始加速度,终点加速度)端点条件。

通过了解这几个性质,我们来推导三次样条曲线。

1.三次样条曲线的定义:

为了更精确的求解三次样条曲线,我们假设给定n个点(x1,y1),(x2,y2),(x3,y3),......,(xn,yn),其中xi升序且不同,通过各个点的三次样条曲线是一组三次多项式:

2.根据性质推导:

  • 由性质1(曲线在纽结处要求平滑)得到n-1个公式,其中含有3n-3个未知量。

所以我们可以得到:

  • 由性质2(曲线在纽结处要求斜率相等)得到n-2个公式,其中含有3n-6个未知量。

  • 由性质3(曲线在纽结处要求曲率相等)得到n-2个公式,其中含有3n-3个未知量。

所以我们可以得到:

  • 由性质4(曲线起点,终点条件)得到2个公式,对于自由三次样条曲线条件如下。

通过将性质1,3得到的di,bi带入性质2中的式子,我们可以得到ci

对于自然样条曲线 C0=0,Cn=0。

在实际应用中,求出每两个点间的步长,先求出Ci的值,再根据性质1,性质3可求解出bi和di的值,然后就可以得到每两个点之间的三次样条多项式。

三次样条曲线CubicSpline相关推荐

  1. MATLAB---构造一个插值三次样条曲线

    function InterpCubicSplineCurv() %本程序的功能是构造一个插值三次样条曲线N = 12; SamplPs = CollectSPFergusonCi2(N);%采集型值 ...

  2. 机械臂规划----三次样条曲线

    机械臂规划----三次样条曲线 原理讲解 源代码 三次样条曲线将稀疏点变成稠密点,是常用的一种规划方法. 原理讲解 源代码 #!/usr/bin/env python #-*-coding:utf-8 ...

  3. java三次样条函数求导_利用java语言对三次样条曲线的实现

    Java语言中关于曲线问题的高级应用开发在jdk尚未支援2D图形之前,只可以画出直的.相同粗细的线条.现在可以通过2DAPI绘出不同粗细的线条及圆滑的曲线.通过系统java.awt.geom包中提供了 ...

  4. matlab导数曲线怎样画,matlab三次样条曲线的绘制(spline和csape函数详解)

    matlab三次样条函数的绘制(spline和csape函数详解) 样条函数是工程中常用的插值函数.早期工程师制图时,把富有弹性的细长木条(所谓样条)用压铁固定在样点上,在其他地方让它自由弯曲,然后沿 ...

  5. 三次样条曲线 python实现

    reference:https://blog.csdn.net/deramer1/article/details/79034201 import numpy as np import matplotl ...

  6. 三次样条曲线插值的基本原理及其C#实现

    声明:本人空间的所有文章,若无特别声明,皆为本人原创,可自由转载,但要注明原作者和原始出处,不可作为商业用途. 下面的内容是直接从Word文档复制粘贴出来的,有很多内容丢失,完整的PDF版本可到百度网 ...

  7. 三次样条曲线插值(cubic spline)实例应用

    目标 工作需要,需要达成这样得一个需求,给一系列得三维点,三维点按照顺序连接,形成一条折线.需要依照这条折线,进行曲线1m等距离插值.具体如下图 其中,红色圆圈点为原始点集OrigPoints(原始点 ...

  8. matlab三次样条曲线的绘制(spline和csape函数详解)

    matlab三次样条函数的绘制(spline和csape函数详解) 前言 1.spline函数详解 1.一维非节点边界 2.第二边界条件 3.高维无约束 4.高维第二边界 5.利用第二边界条件绘制圆 ...

  9. matlab 拖动曲线,Matlab屏幕交互取点并作三次样条曲线matlab GUI:屏幕取点+三次样条曲线+屏幕拖动 | 学步园...

    函数实现屏幕拖动: function figure1_WindowButtonDownFcn(hObject, eventdata, handles) set(gcf,'Pointer','fleur ...

最新文章

  1. Dubbo下载-从missing artifactId说起
  2. 让 FileUpload 文本框只读
  3. MapReduce PLinq 简单示例
  4. 使用 ebpf 深入分析容器网络 dup 包问题
  5. linux at24测试程序,linux 2.6下eeprom at24c08 i2c设备驱动(new style probe方式)
  6. transition css_Transition 过渡
  7. C语言链表存储数据并排序,c语言求助:怎么根据链表中的某个数据对链表进行排序?...
  8. pca主成分分析结果解释_主成分分析(PCA)原理精讲 | 统计学专题
  9. C# 如何理解 ASP.NET Web API 的 REST
  10. hdu 1856 并查集——ac的不一定正确
  11. PHP设计模式——模板模式
  12. 下载Windows10纯净官方镜像
  13. Latex 给参考文献添加doi号和超链接
  14. 特斯拉又发生车祸!电池夜间还自燃3次
  15. 【学习day1】图像分类数据集+softmax回归
  16. linux有root权限留后门,linux下获取root权限后安装后门程序rootkit
  17. 给予员工更好的激励- - 俞敏洪
  18. v5行为验证使用介绍(三)- 程序接入流程
  19. CPU 运行频率监控
  20. html清单标签,标记语言——清单

热门文章

  1. 使用Tensorflow训练LSTM+Attention中文标题党分类
  2. 接口测试管理平台手册
  3. 前端面试题(带文字+代码解析),我不相信你看不懂(2022.11.04)
  4. CCF CSP认证 难度及经历
  5. 访问局域网中的虚拟机(详细教程!)
  6. CodeForces入门
  7. WIFI基础入门--802.11--成帧细节(管理帧)--5
  8. JVM 内存模型面试题目
  9. gitblit中忘记admin密码,怎么办?附详细解决方法和截图
  10. 途牛android源码,途牛,Android 开发工程师,一面,攒人品