2.3 贝塞尔曲线(Bézier Curve)

type
status
slug
date
summary
tags
category
password
icon
做人呢,最重要的是开心。—TVB
🏰代码及环境配置:请参考0.2 环境配置和代码运行 | 动手学运动规划!

贝塞尔曲线(Bézier Curve),也被称为贝塞尔多项式(Bézier Polynomial),是一种由一系列控制点(Control Point)所定义的平滑曲线。
 
notion image

2.3.1 感性认识

2.3.1.1 1阶贝塞尔曲线

我们从一维开始,假设有两个控制点, 我们用参数方程表达线段. 显然.
notion image
当t从0到1逐渐增大时, 就有了1阶贝塞尔曲线
notion image

2.3.1.2 2阶贝塞尔曲线

增加一个控制点, 容易理解的是, 线段上的点,线段上的点
notion image
我们将的连线(绿色线)也用参数方程表达, 并且取点作为点形成贝塞尔曲线.
我们详细的解释一下, 这里隐含了一个比例的约束:
也就是说参数t实际代表: 当前点在线段上的百分比位置. 比如t=0.5时, 处在线段的中点; 处在线段的中点; 同样, 处于线段的中点;
每一个构成了最终的贝塞尔曲线
notion image

2.3.1.3 3阶贝塞尔曲线

再增加一个控制点, 这时将(蓝色线)也连接起来, 同样在线段上按比例t取点, 作为最终的贝塞尔曲线上的点.
notion image
notion image
类似的, 如果继续增加控制点, 也会用相同的方法按比例新的点, 不再赘述. 显而易见的是, 贝塞尔曲线一定会经过第一个和最后一个控制点, 中间的控制点不保证经过.

2.3.2 公式推导

有了感性的认识以后, 我们再来推导贝塞尔曲线的数学表达.

2.3.2.1 1阶贝塞尔曲线

notion image
我们利用基础向量知识, 来计算1阶贝塞尔曲线的点, 是原点

2.3.2.2 2阶贝塞尔曲线

notion image
根据之前的推导, 容易得知:
那么类似的, 处于线段的上百分比t的位置, 我们也容易得知
继续展开

2.3.2.3 3阶贝塞尔曲线

notion image
再增加一个控制点, 类似的方式, 处于线段的上百分比t的位置, 我们也容易得知
完全展开之后, 我们可以将它写出矩阵的形式:
实际上, 这也就是3阶贝塞尔曲线的完整表达形式.

2.3.2.4 n阶贝塞尔曲线的一般性定义

在上面的推导中, 我们很容易发现, 不管阶数如何增加, 最开始展开时, 都是在低1阶的贝塞尔曲线点组成的线段上按比例取点. 比如上面推导过的3阶贝塞尔曲线:
是由 组成的2阶贝塞尔曲线上的点, 将其定义为 是由 组成的2阶贝塞尔曲线上的点, 将其定义为
那么, 显然可以重新得到3阶贝塞尔曲线的初始展开式:
类似的, 其中的2阶和1阶贝塞尔曲线:
我们发现, 不管阶数是多少, 都是在递归式的展开. 被拿出来多少次, 实际就是概率论中从n个不同元素中取出k个元素的组合方式数. 也就是二项式系数(Binomial coefficient), 我们将其写为:
那么当阶数为n时, 可以写出:
最终, n阶贝塞尔曲线可以整理成如下一般性定义的形式:
举个例子, 当n=5时:

2.3.2 优缺点

优点:
  • 计算简单, 资源消耗小
  • 高度的平滑性和连续性
  • 通过控制点, 易于控制形状
缺点:
  • 当控制点数量较多时,曲线的阶数也会相应增加. 既导致曲线变得复杂,也会增加计算资源
  • 修改其中一个控制点, 会影响整条贝塞尔曲线的形状
  • 通过调整中间控制点, 难以保证曲线远离障碍物
 
下一节, 我们会解析和运行代码.

参考链接

动手学运动规划(Motion Planning)动手学运动规划(Motion Planning)
Loading...
目录
文章列表