B-Spline(11):样条曲线拟合-光顺逼近

曲线拟合包含两个方面,插值(interpolation)和逼近(approximation)。用于曲线拟合的离散点通常不具有非常高的精度,直接插值得到的曲线可能不满足“光顺(fair)”要求,本节的目标是介绍光顺的定义,以及给出一种满足“光顺”要求的最小二乘逼近方法。 Continue reading

B-Spline(八):节点插入

节点插入的含义是在不改变曲线形状的前提下,向节点序列(knot vector)中插入节点。节点插入的出发点与Bezier曲线的升阶一样,都是想增加控指点的数量以增加曲线的自由度。在不考虑改变曲线阶次的情况下,根据 m=p+n+1的等式,节点数加一,控制点数量加一。 Continue reading

B-Spline(四):基函数计算

与Bezier曲线一样,B样条对于给定参数u求曲线上点的算法都不是通过计算基函数的值后带入控制点坐标计算的,而是通过de Boor算法计算,但是在曲线内插、拟合、优化等后续话题中,都需要带入基函数的值。因此本节的目标是介绍给定任意参数u,计算一组\(N_{i,p}(u)\)值的算法。 Continue reading

Bezier曲线(二):给定参数u求点

贝塞尔曲线最常见的功能就是给定参数点u,计算对应曲线上的点C(u)。这个过程是正算过程,即给定参数求表达式的值。最简单的方法是根据公式,首先计算各基函数的值,然后与相应的控制点相乘,相加。但是这样会计算u的n次幂,有可能是数值不稳定的。本文介绍的德卡斯特里奥(De Casteljau’s)算法,是一种数值稳定的方法。 Continue reading