spline样条曲线

 系列文章目录


前言

spline样条曲线就是画线的尺子,是线条生成器,是固定规则的线条生成


一、课程知识

Bezier curves

首先是线性插值,不停的进行插值最后得到的函数P(t),t即为插值的比例从0到1,这样做当然简单,但是带来的问题是:计算很昂贵

为此,它还有另一种形式

将P看作是四个向量P1,P2,P3,P4的线性组合

还有一种形式:

将向量线性组合后由t次幂来加权

还有一种将后两种表示形式结合的矩阵表示方法:

中间是它的特征矩阵,前两个相乘是第二种表示形式,后两种相乘是第三种表示形式

这就是三次贝塞尔曲线,所以还有如下十二次贝塞尔曲线:

它有什么坏处呢?

1.改变一个控制点则全局变化

2.自定义形状很困难,无法保证通过每一个点(其实是相较于三次贝塞尔曲线的缺点)

3.计算量非常大,尤其是不断变化的时候

所以,我们采用三次贝塞尔进行拼接:

三个问题迎刃而解,首先因为它是贝塞尔曲线组成的贝塞尔样条,那么它一定通过贝塞尔曲线的起始点,所以它通过每一点,形状更容易控制。二是,它是由贝塞尔曲线组成的,所以它的控制点只能改变它涉及的贝塞尔曲线。三是,它是由贝塞尔曲线简单拼接起来i,所以计算开销只是叠加不会很大。

参数连续和几何连续

那么我们进一步研究这个曲线。

作为曲线的尺子,我们不仅需要它能随我们心意进行制作曲线,而且还要它能满足我们希望的条件。作为尺子画直线我们希望它直且长度精确。对于画曲线,我们在意的就是它的连续性。

在这里提前定义,参数连续性就是各阶导数连续,几何连续是各阶导方向连续。即差别一个导数的大小是否相同。这里我的理解比较困难,因为没有考虑维度,一维f(x)函数来说,一阶导数即代表斜率,也代表方向,导数的大小和方向直接界限到底在哪?对于二维函数tP(P是一个向量),导数则既有方向又有大小,大小代表曲率方向代表切线方向。只能理解到这一步,望各位不吝赐教。

对于贝塞尔样条,它的连续性是怎样呢?

抛结论后思考:中间控制点两边的控制点镜像则C1参数一阶连续,若镜像方向相同则G1几何连续。

求导即可推出。

G2的意义

G1切线连续,G2曲率连续(曲线速度不为0)

Hermit spline

就是自己给起始点的位置速度,根据约束求贝塞尔曲线然后拼接,这样的中间控制点既是前一段的尾点也是后一段的头点,速度一样,则为C1连续。本质上是中间控制点镜像的贝塞尔曲线

就是不人为给定速度,输入直接就是控制点的位置即可。速度由自己生成。生成规则,节点2的速度为1指向3的,3为2指向4的,以此类推。这样除了1节点和最后一个节点都有了自己的速度。

Catmul-rom spline

1点和最后点的速度由附近点镜像生成

所以,1的速度为1指向2的速度两倍。

也是同上一个样条为C1连续

B spline

根据四个p1,p2,p3,p4的位置满足C2约束所生成的曲线就是B曲线,由其组成的样条就是B样条

特征矩阵16个未知数,需要16个约束,前15个好理解。第16个为保证凸函数B1,2,3为1.

它的拼接前后有三个控制点相同,所以可以达到C2.

二、fast planner中的样条后端优化

未完待续。。。


参考:

1.www.youtube.com/watch?v=jvPPXbo87ds

2.描述光滑度中对于曲线、曲面的C0、C1、C2和G0、G1、G2定义和区别_c1连续-CSDN博客

3.B样条曲线(详细解析版)-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值