12月学习进度9/31——计算机图形学期末准备06四阶三次B样条曲线矩阵形式推导及MATLAB实现

Posted fu_GAGA

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了12月学习进度9/31——计算机图形学期末准备06四阶三次B样条曲线矩阵形式推导及MATLAB实现相关的知识,希望对你有一定的参考价值。

B样条曲线的递归定义

B样条曲线与给定的阶数 k k k节点向量都有关

即使选取的阶数 k k k 相同,但节点向量不同,则得到的曲线也不同

一些规律:

递推图示:

k k k 阶B样条 N i , k ( u ) N_i,k(u) Ni,k(u) 可由两个 k − 1 k-1 k1 N i , k − 1 ( u ) , N i + 1 , k − 1 ( u ) N_i,k-1(u),N_i+1,k-1(u) Ni,k1(u),Ni+1,k1(u) 递推得到

系数的含义:

系数分别为
u − u i u i + k − 1 − u i \\fracu-u_iu_i+k-1-u_i ui+k1uiuui

u i + k − u i u i + k − u i + 1 \\fracu_i+k-u_iu_i+k-u_i+1 ui+kui+1ui+kui
分母分别为两个 k − 1 k-1 k1 阶基函数的支撑区间:

  • N i , k − 1 ( u ) N_i,k-1(u) Ni,k1(u) 的支撑区间为 [ u i , u i + k − 1 ) [u_i,u_i+k-1) [ui,ui+k1)
  • N i + 1 , k − 1 ( u ) N_i+1,k-1(u) Ni+1,k1(u) 的支撑区间为 [ u i + 1 , u i + k ) [u_i+1,u_i+k) [ui+1,ui+k)

分子为参数 u u u N i , k ( u ) N_i,k(u) Ni,k(u) 的支撑区间 [ u i , u i + k ) [u_i,u_i+k) [ui,ui+k) 划分为两部分

  • u − u i u-u_i uui 为参数 u u u 距离左端节点位置
  • u i + k − u u_i+k-u ui+ku 为参数 u u u 距离右端节点位置

分子(距离)除以分母(区间长度)后,将距离归一化到 ( 0 , 1 ) (0,1) (0,1) 之间
因此, N i , p ( u ) N_i,p(u) Ni,p(u) N i , p − 1 ( u ) N_i,p-1(u) Ni,p1(u) N i + 1 , p − 1 ( u ) N_i+1,p-1(u) Ni+1,p1(u)线性组合,有两个系数,都在 u u u 上是线性的,在0和1之间。

四阶均匀B样条曲线

1.计算四阶B样条基函数 N i , 4 ( u ) N_i,4(u) Ni,4(u)

根据递推公式计算:

如上图所示,B样条基函数 N i , 4 ( u ) N_i,4(u) Ni,4(u) 由四段三次多项式曲线拼接而成。
四条三次多项式曲线如下图所示:
(分别为实线、虚线、点线、点划线)

其中B样条基函数 N i , 4 ( u ) N_i,4(u) Ni,4(u) 曲线为下图中红色曲线:

均匀B样条基函数在曲线定义域内各个节点区间上都有相同图形
(相同公式,其中所有的 u i + 1 − u i u_i+1-u_i ui+1ui 都相同)

上图可以分析B样条的局部控制特性

第一个控制点 P i P_i Pi 只与 N i , 4 ( u ) N_i,4(u) Ni,4(u) 相乘(由B样条曲线定义式得),所以其影响 N i , 4 ( u ) N_i,4(u) Ni,4(u) 的支撑区间 ( u i , u i + 4 ) (u_i,u_i+4) (ui,ui+4) 上的曲线的形状

2. 简化函数形式

以其中一个节点区间 [ u i + 3 , u i + 4 ) [u_i+3,u_i+4) [ui+3,ui+4) 为例:

上图中 ( i , j ) (i,j) (i,j) 表示第 i i i 个基函数的第 j j j 段分片

上述公式中很多 u − u i + j u-u_i+j uui+j 形式的因子
   ↓
   ↓ 令 t j = u − u i + j t_j = u-u_i+j tj=uui+j
   ↓
(仍以区间 [ u i + 3 , u i + 4 ) [u_i+3,u_i+4) [ui+3,ui+4) 为例)
引入
t 3 = u − u i + 3 t_3 = u-u_i+3 t以上是关于12月学习进度9/31——计算机图形学期末准备06四阶三次B样条曲线矩阵形式推导及MATLAB实现的主要内容,如果未能解决你的问题,请参考以下文章

12月学习进度3/31—计算机图形学期末准备01拉格朗日插值 + 三次Hermite插值

12月学习进度7/31——计算机图形学期末准备04B样条曲线及其基函数的定义

12月学习进度8/31——计算机图形学期末准备05B样条曲线和基函数的性质

12月学习进度5/31——计算机图形学期末准备02规范化两点三次Hermite插值及MATLAB实现

12月学习进度4/31——计算机图形学拉格朗日插值的MATLAB实现

西南交通大学计算机图形学期末复习