【计算机图形学】四、B样条曲线的生成
时间: 2023-08-07 19:02:30 浏览: 93
均匀周期性B样条曲线-ppt计算机图形
B样条曲线是一种常用的曲线表示方法,它可以通过一组控制点和节点向量来生成。节点向量是一个非降序的实数序列,通常用符号序列 $U=(u_0,u_1,\dots,u_m)$ 表示,其中 $u_i$ 表示第 $i$ 个节点。
B样条曲线的生成过程可以分为以下几步:
1. 确定节点向量 $U$ 和阶数 $p$
节点向量的选择对生成的曲线有很大的影响,一般要满足一些条件,比如非降序、首尾节点重复、节点数与控制点数之和相等等。阶数 $p$ 决定了曲线的光滑度,一般为正整数。
2. 计算节点区间
根据节点向量 $U$ 和阶数 $p$,可以计算出每个节点的区间 $[u_i,u_{i+1})$,其中 $i$ 的取值范围是 $[0,m-p]$。
3. 确定节点的重心序列
重心序列是指一组由节点向量 $U$ 和阶数 $p$ 决定的实数序列 $V=(v_0,v_1,\dots,v_n)$,其中 $n=m+p+1$,$v_i$ 的计算公式为:
$$
v_i = \begin{cases}
\frac{1}{p+1}\sum_{j=i-p}^{i}u_j, & i=0,1,\dots,p \\
\frac{1}{p+1}\sum_{j=i-p}^{i}u_j + \frac{1}{p+1}\sum_{j=i-p+1}^{i+1}u_j, & i= p+1,\dots,m \\
\frac{1}{p+1}\sum_{j=i-p+1}^{i+1}u_j, & i=m+1,\dots,n-1 \\
\end{cases}
$$
4. 确定基函数
B样条曲线的基函数是一组递归定义的函数,可以用递归算法计算。常用的基函数有三种,分别是:
* 三次B样条:$N_{i,3}(u)=\frac{(u-u_i)^3}{6h_i^3}-\frac{(u-u_i)h_i}{6h_i^2}+\frac{u-u_{i-1}}{6h_{i-1}}-\frac{(u-u_{i-1})^3}{6h_{i-1}^3}$
* 二次B样条:$N_{i,2}(u)=\frac{(u-u_i)^2}{2h_i^2}-\frac{(u-u_i)h_i}{h_i^2}+\frac{u-u_{i-1}}{2h_{i-1}}-\frac{(u-u_{i-1})^2}{2h_{i-1}^2}$
* 一次B样条:$N_{i,1}(u)=\frac{u-u_i}{h_i}-\frac{u-u_{i-1}}{h_{i-1}}$
5. 计算曲线
给定一组控制点 $P_0,P_1,\dots,P_n$ 和节点向量 $U$,可以用基函数和重心序列计算出曲线上的点 $Q(u)$,计算公式为:
$$
Q(u)=\sum_{i=0}^{n}N_{i,p}(u)P_i
$$
其中 $N_{i,p}(u)$ 表示 $i$ 号节点对应的基函数,$P_i$ 是控制点的坐标。
阅读全文