Bezier方法

Bezier曲线

定义:对于n+1个控制点V_i(i=0,1,2,...,n)V_i(i=0,1,2,...,n),n次Bezier曲线为:

$$ \begin{align} P_n(t) &= \sum_{i=0}^{n} B_{n,i}(t)V_i,0\le t\le 1v \\ B_{n,i} &=\frac{n!}{(n-i)!i!}(1-t)^{n-i}t^i \end{align} $$

其中B_{n,i}B_{n,i}称为n次Bernstein基函数。
例如,当n=3时,即3次Bezier曲线为:;

$$ \begin{align} P_3(t) &= B_{3,0}(t)V_0+B_{3,1}(t)V_1+B_{3,2}(t)V_2+B_{3,3}(t)V_3,0\le t\le 1v \\ B_{3,i} &= \left\{\begin{matrix} B_{3,0}(t)=(1-t)^3 \\ B_{3,1}(t)=3(1-t)^2t \\ B_{3,2}(t)=3(1-t)t^2 \\ B_{3,3}(t)=t^3 \end{matrix}\right. \end{align} $$

性质

  • 两端重合:Bezier曲线和控制多边形起始两端点重合,P(0)=V_0,P(1)=V_nP(0)=V_0,P(1)=V_n
  • 两端相切:Bezier曲线和控制多边形起始两端点相切,且切矢模长为n倍,P'(0)=n(V_1-V_0),P'(1)=n(V_n-V_{n-1})P'(0)=n(V_1-V_0),P'(1)=n(V_n-V_{n-1})
  • 对称性:控制点反序够早的曲线一致,只是参数化相反
  • 凸包性:曲线落在控制多边形形成的凸包内
  • 几何不变形:曲线仅取决于控制点,与坐标系无关

递归分割de Casteljau算法
在控制多边形每条边上按比例t:(1-t)进行分割,初始n+1个点,第一次分割得到n个点,n个点连起来组成新的控制点,第二次分割得到n-1个点,直到最后只剩一个点,该点即Bezier曲线上的点。
de Casteljau建立的递归公式如下:

$$ \begin{array}{c} \left\{\begin{matrix} &V_i^r(t) = (1-t)V_i^{r-1}+tV_{i+1}^{r-1} ,r = 0,1,2,...,n\\ &V_i^0(t) = V_i,i = 0,1,2,...,n \end{matrix}\right. \end{array} $$

该方法适合于编程几何作图。

有理Bezier曲线

定义:比Bezier曲线多了个顶点权重系数,至于哪里有理了不清楚。

$$ P_(t)=\frac{\sum_{i=0}^{n}B_{n,i}(t)w_iV_i}{B_{n,i}(t)w_i} , 0\le t\le 1 $$

例如,3次有理Bezier曲线表示为:

$$ P_3(t)=\frac{(1-t)^3w_0V_0+3t(1-t)^2w_1V_1+3t^2(1-t)w_2V_2+t^3w_3V_3}{(1-t)^3w_0+3t(1-t)^2w_1+3t^2(1-t)w_2+t^3w_3} $$

权重$w_i$可以一般取大于零的实数。

递归分割Farin算法
和上述过程类似:

$$ \begin{array}{c} \left\{\begin{matrix} &V_i^r(t) = (1-t)\frac{W_i^{r-1}(t)}{W_i^r(t)} V_i^{r-1}+t\frac{W_{i-1}^{r-1}(t)}{W_i^r(t)}V_{i+1}^{r-1} ,r = 0,1,2,...,n\\ &V_i^0(t) = V_i,i = 0,1,2,...,n \end{matrix}\right.\\ \left\{\begin{matrix} W_i^0=w_i \\ W_i^r(t)=\sum_{j=0}^{r}W_{i+j}^{r-1}B_{r,j}(t),r=1,2,...,n \end{matrix}\right. \end{array} $$

B样条方法

B样条方法是Bezier方法的的一种一般化,给定n+1个控制点和阶次k,以及节点向量${t_0,t_1,...,t_{n+k+1}}$:

$$ \begin{array}{c} P_n(t) = \sum_{i = 0}^{n}N_{i,k}(t)V_i=\sum_{i = j-k}^{j}N_{i,k}(t)V_i,t_j\le t\le t_{j+1}\\ N_{j,0}=\left\{\begin{matrix} 1,t_j\le t\le t_{j+1} \\ 0,otherwise \end{matrix}\right.\\ N_{i,k}(t)=\frac{t-t_i}{t_{i+k}-t_i}N_{i,k-1}(t)+\frac{t_{i+k+1}-t}{t_{i+k+1}-t_{i+1}} N_{i+1,k-1}(t) \end{array}\\ *约定 frac{0}{0}=0 $$

其中$N_{i,k}(t)$为k阶( k-1次 )B样条基函数,${t_0,t_1,...,t_{n+k+1}}$为节点矢量,B样条按其节点矢量分布可分为以下三类:

  • 均匀B样条:均匀分布或等距分布。
  • 准均匀分布:与均匀B样条区别在于两端端点为重节点。
  • 非均匀B样条:任意分布。
    例如三次均匀B样条基函数为:

$$ \left\{\begin{matrix} N_{0,3}(t)=\frac{1}{6}(1-t)^3 \\ N_{1,3}(t)=\frac{1}{6}(3t^3-6t^2+4) \\ N_{2,3}(t)=\frac{1}{6}(-3t^3+3t^2+3t+1) \\ N_{3,3}(t)=\frac{1}{6}t^3 \end{matrix}\right. $$

B样条具有局部性:改变一个控制点时,只会对附近曲线段的形状产生影响。
对于一个k次的n+1个控制点的B样条,当k=n时,退化为Bezier曲线。

NURBS方法

NURBS曲线全称非均匀有理B样条,是B样条的一般化,非均匀指节点的选取可以是不均匀的,有理主要体现在每个控制点有个权因子。

$$ R_n(t)=\frac{\sum_{i=0}^{n}N_{i,k}(t)w_iV_i}{N_{i,k}(t)w_i} $$

参考

https://blog.csdn.net/johnhany/article/details/8830928
《形状可调的参数曲线曲面造型方法研究》
《Bezier曲线曲面的造型设计理论研究》

最后修改:2022 年 02 月 07 日
你的赞赏是我前进的动力