样条曲线
贝塞尔曲线(bezier curve)
由线性插值而来的光滑曲线
插值公式 lerp(P0 ,P1 ,t) = P0 (1 - t)+ P1 t
三阶贝塞尔曲线
- 插值表示法
P代表控制点,t∈(0, 1)。 - 伯恩斯坦表示法
基函数
代表了各个点的影响 - 特征矩阵表示法
贝塞尔曲线的不足
- 控制能力不足:移动一个点会影响整条曲线
- 只经过起点和终点
多条3阶贝塞尔曲线的拼接
参数t变为u,u取值从0到曲线条数,整数部分代表曲线索引,小数部分为每条曲线本地t值。
knot values :
knot interval:节点之间间隔
连续性的讨论
- broken knot
c0 连续 - aligned
- mirrored
c1 连续
c1 连续
A‘(1) = B’(0) --> P4 = 2P3 - P2
A, B代表了相邻的两条曲线
c2 连续
A’‘(1) = B’'(0) --> P5 = P1 + 4(P3 - P2 )
牺牲控制能力来保证连续性。
几何连续性
2阶是曲率
Hermite Spline
指定起点,终点的位置速度得到。当我们将多条hermite曲线拼接,并使两条曲线结点处位置,速度相等:
hermite与 bezier的转换
线性曲线
Cardinal Spline
指定每个点的位置,速度是邻近2点组成的向量再乘上一个缩放因子scale(端点处只有一个neibor,做neibor关于端点的镜像,从而得到端点的速度)。
曲线的随scale的变小变得平缓。
Catmull-Rom Spline
scale=0.5 的Cardinal Spline