今天审稿路径规划的文章在做全局规划时用GA算法,后面对曲线平滑时用的B样条曲线。它是一个数学上的概念。考虑到已经忘了啥是B样条曲线了,晚上还是查了一下,看了几个之后,我倒是弄明白了,但是这些文章都都是用公式描述的不清不楚,所以这里给个简要直观的介绍吧。请注意的是,我只是大致描述了基本思想,并不严谨。
B样条曲线脱胎与贝塞尔曲线。贝塞尔曲线有一个比较麻烦的地方就是如果你调整了一个控制点,那么整条线可能都会动,这个就比较烦人了。有的人可能玩过PS,再不济也玩过PPT吧。那里面图像变换或者曲线调节,估计不少人都用过。也就是你画了个弧线(贝塞尔曲线和B样条曲线的目标都是平滑曲线),这个弧线上有不少的控制点,你拖一下控制点这个曲线就会发生变化。在PS的图像变换操作也是一样的,会有很多格子,格子交叉点和边界点就是控制点,你拖拽一个控制点,对应的格子就会变形。B样条曲线上的控制点就是这个意思,它和贝塞尔曲线的控制点的区别就是这个控制点影响的范围不一样,它一般只影响它周边的很小范围的曲线的形状。
有了控制点的概念之后,剩下就简单了。GA算法得到的路径原则上是折线段拼出来的路径,折线断点就当做控制点。B样条呢就是在这些控制点之间构建曲线,也就是N个控制点对应的N-1个段,每段一个曲线。这里面有个要求,就是相邻两段的曲线要平滑过渡,至少是公共端点的斜率要是一样的。注意,控制点只是控制点,采用平滑曲线连接起来整个路径后,这些路径不一定经过这些控制点了。目前,各段的曲线一般用3维多项式表征,一般够用了。
考虑到分段是否均匀,B样条还分为均匀B样条和非均匀B样条。