B样条曲线曲面的性质及其生成算法的研究
b样条曲面

实验四:B 样条曲面一.实验目的用多个B 样条曲线画出一个曲面,并能实现鼠标球滚动。
二.算法思想B 样条曲面是B 样条曲线的拓广。
一块m ⨯n 次B 样条曲面片的数学表示式:)()(),(,,00w F u FP w u P n j mi m i nj ij∑∑===w u , ∈[0,1] 式中,ij P (i =0,1,2,…..,m;j=0,1,2,…..n )是定义此曲面片的顶点位置向量矩阵,共计(m+1)(n+1)个顶点。
)()(,,w F u F n j m i 为B 样条基底函数,w u ,为参数。
显然,m 与n 不一定相等,如m=n=3,则由4⨯4个顶点构成特征多面体,其相应的B 样条曲面片称为双三次B 样条曲面片。
其中:m i m i m k k m i k i m u c m u F )()1(!1)(10,--+-=+-=∑)!1(!)!1(1i m i m C im -++=+其中: 展开三次B 样条曲面数学表达式并写成矩阵()()()()TT s Ts W M ww w w F w F w F w F UM u u u u F u F u F u F w F w F w F w F p p p p p p p p p p p pp p p p u F u F u F u F w u Q =⎪⎪⎪⎪⎪⎭⎫⎝⎛⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡----==⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡----=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=1000113334063133161)()()()(0141030303631331611)()()()()()()()()()()()(),(2343212343214321333231302322212013121110030201004321其中:三.程序主要代码#include <gl/glut.h>#include <stdio.h> #include "ggltools.h" #include "gmatrix3d.h" #include "gvector3d.h" GMatrix3d gRotMatrix ; bool gIsLBtnDown =false ; int gMouseX =0; int gMouseY =0;//控制点网络GPoint3d **gCtrlGrid =NULL ; //int gNumX=0;int gNumY=0;bool loadData(const char *fileName){FILE *fp =fopen(fileName,"r");if(fp == NULL)return false;fscanf(fp,"%d %d",&gNumY,&gNumX);printf("NumY=%d,NumX=%d\n",gNumY,gNumX);int i,j;float x,y,z;gCtrlGrid = new GPoint3d *[gNumY];for(i=0;i<gNumY;i++){gCtrlGrid[i]= new GPoint3d[gNumX];for(j=0;j<gNumX;j++){fscanf(fp,"%f %f %f\n",&x,&y,&z);gCtrlGrid[i][j].set (x,y,z);printf("%.1f %.1f %.1f\t",x,y,z);}printf("\n");}fclose(fp);return true;}void drawCtrlGrid(){int i,j;glColor3f(1,1,1);for(i=0;i<gNumY;i++){for(j=0;j<gNumX-1;j++){glBegin(GL_LINES);glVertex3dv(gCtrlGrid[i][j]);glVertex3dv(gCtrlGrid[i][j+1]);glEnd();}}for(j=0;j<gNumX;j++){for(i=0;i<gNumY-1;i++){glBegin(GL_LINES);glVertex3dv(gCtrlGrid[i][j]);glVertex3dv(gCtrlGrid[i+1][j]);glEnd();}}}GPoint3d cubicBSpline(int i0,int j0,GPoint3d **ctrlGrid,double u,double v){double bu[4] ,bv[4];bu[0]= (-u*u*u+3*u*u-3*u+1)/6.0;bu[1]= (3*u*u*u-6*u*u+4)/6.0;bu[2]= (-3*u*u*u+3*u*u+3*u+1)/6.0;bu[3]= (u*u*u)/6.0;bv[0]= (-v*v*v+3*v*v-3*v+1)/6.0;bv[1]= (3*v*v*v-6*v*v+4)/6.0;bv[2]= (-3*v*v*v+3*v*v+3*v+1)/6.0;bv[3]= (v*v*v)/6.0;int i,j,k;GPoint3d pt;for(k=0;k<3;k++){pt[k]=0;for(i=0;i<4;i++){for(j=0;j<4;j++){pt[k]+=ctrlGrid[i0+i][j0+j][k]*bu[j]*bv[i];}}}return pt;}void drawBSpline(GPoint3d **ctrlGrid,int ny,int nx){int i,j,nu,nv,iu,iv;GPoint3d pt0,pt1,pt2,pt3;double u,du,v,dv;nu=10;du=1.0/nu;nv=10;dv=1.0/nv;glColor3f(1,1,0);glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);for(i=0;i<ny-3;i++){for(j=0;j<nx-3;j++){for(iv=0,v=0;iv<nv;iv++,v+=dv){for(iu=0,u=0;iu<nu;iu++,u+=du){pt0=cubicBSpline(i,j,ctrlGrid,u,v);pt1=cubicBSpline(i,j,ctrlGrid,u,v+dv);pt2=cubicBSpline(i,j,ctrlGrid,u+du,v+dv);pt3=cubicBSpline(i,j,ctrlGrid,u+du,v);glBegin(GL_QUADS);glVertex3dv(pt0);glVertex3dv(pt1);glVertex3dv(pt2);glVertex3dv(pt3);glEnd();}}}}}//将屏幕坐标映射我球面坐标GVector3d getSphereVec(int mx,int my,int w,int h) {double x,y,z,r;x=(2.0*mx-w)/w;y=(h-2.0*my)/h;r=x*x+y*y;if(r>1)r=1;z=sqrt(1-r);GVector3d v(x,y,z);v.normalize ();return v;}void drawPlane(){glColor3f(0.6f, 0.6f, 0.6f);for(float u=-1; u<1.01; u+=0.2f){glBegin(GL_LINES);glVertex3f(-1, 0, u);glVertex3f(1, 0, u);glVertex3f(u, 0, -1);glVertex3f(u, 0, 1);glEnd();}}四.程序截图。
B样条曲面构建算法设计与实现

B样条曲面构建算法设计与实现B样条曲面是一种用于曲面建模的经典技术。
它通过在有限数量的控制点上定义曲面的特征,并利用一组特定的基函数,来实现曲面的几何形状。
B样条曲面的优点在于它能够高效地逼近复杂的几何形状,同时也具有很好的光滑性和可调性。
本文将介绍B样条曲面的构建算法设计与实现。
1. B样条曲线的基础知识B样条曲面是基于B样条曲线而建立的。
B样条曲线是一种多项式插值函数,它可以用于定义复杂的曲线形状。
B样条曲线的定义需要满足两个要求:首先,每个控制点必须与前后控制点之间有一定的关系;其次,每个控制点必须携带一定的权重值,以反映其对曲线形状的影响程度。
在B样条曲线中,每个控制点的权重值可以用来调节曲线的弯曲程度。
另外,在B样条曲线中,基函数与控制点的数量相同。
基函数是一组具有局部支撑区域的函数,它们被用来加权控制点的贡献值。
这些基函数通常称为B样条基函数,它们具有递归性质,使得它们可以在任意阶数上使用。
B样条曲面的构建算法需要满足几个关键要求。
首先,该算法必须能够通过控制点确定曲面的几何形状;其次,该算法必须保证曲面的光滑性和逼近性。
下面我们将介绍一种常见的B样条曲面构建算法。
2.1 控制点网格的定义B样条曲面的控制点通常以网格的形式进行定义。
该网格是由一个m*n的矩形点阵组成,它们被用来确定曲面的几何形状。
在这个点阵中,每个格子的位置就是一个控制点。
控制点的位置可以任意调整,以达到所需的几何形状。
2.2 基函数的定义B样条曲面的基函数是由B样条曲线的基函数扩展而来的。
这些基函数必须满足两个要求:首先,它们必须有足够的支撑区域;其次,它们必须满足一定的递推关系,以方便对曲面进行细分。
B样条曲面的基函数通常使用B样条基函数与升阶的技术相结合而得到。
这些技术使得基函数可以在任意次数上进行升阶,以适应曲面的细节需求。
一旦B样条曲面的基函数得到定义,我们就可以使用它们来计算曲面上的控制点贡献值。
这些贡献值将被用来决定曲面的几何形状。
B样条曲面构建算法设计与实现

B样条曲面构建算法设计与实现一、绪论曲面是三维空间中的一种重要的几何形状,广泛应用于计算机图形学、计算机辅助设计、虚拟现实等领域。
B样条曲面是一种重要的曲面表示方法,具有良好的数学性质和逼近性能,被广泛应用于曲面建模和图形渲染领域。
本文将着重介绍B样条曲面的构建算法设计与实现。
二、B样条曲面的定义B样条曲面是由控制点和节点向量决定的一种曲面表示方法。
在给定的节点向量和控制点的情况下,我们可以通过B样条曲面的插值算法求得曲面上的任意点的坐标。
B样条曲面的定义如下:设曲面S(u,v)的定义域为[0,1]x[0,1],曲面上的点由参数(u,v)确定,称(u,v)为曲面的参数,分别在u方向和v方向上有节点向量U={u0, u1, …, um+k-1}和V={v0, v1, …, vn+l-1},其中m和n分别为u和v方向上的控制点个数,k和l分别为B样条曲面的次数。
给定曲面的节点向量U和V,由控制点Pi,j和B样条基函数Ni,k(u)和Nj,l(v)求得曲面上点S(u,v)的表达式为:S(u,v) = ∑∑Pi,j * Ni,k(u) * Nj,l(v)Ni,k(u)和Nj,l(v)分别为u和v方向上的B样条基函数。
由上式可知,给定曲面的节点向量和控制点,可以求得曲面上任意点的坐标。
1. B样条基函数B样条基函数是B样条曲面构建算法的核心。
B样条基函数的定义如下:对于u方向,B样条基函数的定义为:Ni,k(u) = (u - ui) / (ui+k-1 - ui) * Ni-1,k-1(u) + (ui+k - u) / (ui+k - ui+1) * Ni-1,k-1(u)2. 控制点的影响B样条曲面的构建算法中,控制点对曲面的形状和逼近效果有着重要的影响。
在确定控制点的位置时,需要考虑到曲面的形状,以及控制点的分布对曲面的光滑性和逼近性能的影响。
3. 节点向量的选择节点向量的选择对B样条曲面的构建算法有着重要的影响。
B样条曲面构建算法设计与实现

B样条曲面构建算法设计与实现B样条曲面是一种常用于进行曲面建模的数学工具,它可以通过控制点来定义曲面的形状。
B样条曲面构建算法的设计与实现是曲面建模领域的一个重要研究方向。
本文将介绍B样条曲面构建算法的设计思路和实现方法。
B样条曲面的构建算法主要包括控制点的选择、曲面节点的确定、曲面的生成和曲面的细化等步骤。
下面将分别介绍每个步骤的详细内容。
控制点的选择是指确定用于定义曲面形状的关键点。
在B样条曲线构建算法中,控制点是曲线形状的决定因素。
同样,在B样条曲面构建算法中,控制点也起着决定曲面形状的重要作用。
一般来说,控制点的个数越多,曲面的形状描述能力越强。
过多的控制点会增加计算的复杂性和存储的开销。
如何选择合适的控制点对于B样条曲面的构建非常重要。
曲面节点的确定是指确定曲面形状的细分方式。
节点是曲面的划分点,它们决定了曲面的局部细节。
通常,曲面节点的位置被选择为在参数空间中等距离分布的点。
不同的节点分布方式会导致不同的曲面形状,因此节点的选择对于曲面的形状描述非常重要。
曲面的生成是指根据控制点和节点确定曲面的具体形状。
B样条曲面的生成方法通常是通过计算B样条基函数的线性组合来得到曲面上各个点的坐标。
B样条基函数是一组满足一定性质的函数,它们与控制点和节点的选择有关。
通过调整基函数的权重系数,可以得到不同的曲面形状。
曲面的细化是指对已生成的曲面进行适当的调整和优化,以提高曲面的质量和光滑性。
曲面的细化方法有很多种,其中比较常用的是均匀和非均匀细化方法。
均匀细化是指将曲面上的点等距离地细化,以增加曲面的细节信息。
非均匀细化是指根据曲面的局部特征调整曲面上的点密度,以提高曲面的光滑性和准确性。
B样条曲面构建算法的设计与实现涉及到控制点的选择、曲面节点的确定、曲面的生成和曲面的细化等步骤。
通过合理的算法设计和实现,可以得到具有良好形状描述能力和光滑性的B样条曲面模型,为曲面建模和可视化等应用提供有力的支持。
b样条曲线生成原理

b样条曲线生成原理
B样条曲线是一种基于局部控制点的曲线或曲面。
它是一种基于多项式插值的插值方法。
B样条曲线在插值时采用局部控制点,这意味着曲线上的每个点都受到它附近控制点的影响,而与其它控制点无关。
B样条曲线生成原理如下:
1.确定控制点:确定需要插值的一组控制点,它们用来定义曲线或曲面的形状和方向。
2.确定节点向量:确定节点向量,该向量定义样条曲线或曲面的参数空间。
3.建立基函数:使用节点向量来建立基函数,这些基函数是局部连续的、分段多项式函数。
4.拼接基函数:将相邻的基函数相加,得到样条曲线或曲面的表达式。
5.调整节点向量及其对应的控制点权值,得到最终的 B 样条曲线或曲面,用于插值和逼近目标函数。
总的来说, B 样条曲线是一种基于局部控制点和节点向量的插值方法,可以用于逼近任意复杂的函数,具有局部调整控制点的灵活性和良好的数学性质。
B样条曲面构建算法设计与实现

B样条曲面构建算法设计与实现B样条曲面是一种常用的曲面构建算法,它通过控制点和节点向量来描述曲面的形状,具有良好的局部性和平滑性,被广泛应用于计算机图形学、CAD/CAM系统等领域。
本文将介绍B样条曲面的构建算法设计与实现,包括B样条基函数的计算、曲面的控制点设置、节点向量的确定等关键步骤。
一、B样条基函数的计算B样条曲面的构建首先需要计算B样条基函数,它是描述曲面形状的关键。
B样条基函数的计算采用递归的方法,具体步骤如下:1. 初始化基函数:对于每个控制点Pi和节点向量u,初始化一阶B样条基函数N_i1(u)为:N_i1(u) = {1, 若 u_i <= u < u_i+10, 否则}2. 递归计算高阶基函数:根据一阶基函数递归计算高阶基函数N_ij(u),其中j为基函数的阶数。
递归计算公式如下:N_ij(u) = ((u - u_i) / (u_i+j-1 - u_i)) * N_i,j-1(u) + ((u_i+j - u) / (u_i+j - u_i+1)) * N_i+1,j-1(u)通过递归计算,可以得到所有的B样条基函数,用于曲面的计算和绘制。
二、曲面的控制点设置B样条曲面的形状受控制点的影响,因此需要合理设置控制点来描述所需的曲面形状。
控制点的设置需要考虑曲面的平滑性和细节,通常采用以下几种方式:1. 均匀设置控制点:在曲面的参数空间内均匀设置控制点,以保证曲面的平滑性和形状。
3. 自适应设置控制点:根据曲面的特性和局部形状需求,自适应设置控制点以满足曲面整体的形状和细节。
通过合理设置控制点,可以实现对曲面形状的有效控制和调整。
三、节点向量的确定2. 非均匀节点向量:根据曲面的具体形状需求,非均匀设置节点向量以调整曲面的细节和曲率。
四、B样条曲面的构建与实现在完成B样条基函数的计算、曲面的控制点设置和节点向量的确定后,即可进行B样条曲面的构建与实现。
具体步骤如下:1. 曲面参数化:首先对曲面的参数空间进行参数化,以方便后续的计算和绘制。
基于B样条曲面生成算法的研究与改进

B样条曲面生成算法的研究与改进摘要本文首先介绍了B样条曲面生成的已有算法:基于B样条曲线生成的德布尔算法的B样条曲面的生成算法、基于样条曲面反算方法的B样条曲面生成算法。
接着介绍了两种双三次B样条曲面生成的改进算法:1.基于deBoor和CoxB递推公式构造B样条曲面基的曲面生成算法,2.提高双三次B样条曲面的生成效率的改进算法。
第2种算法能显著提高效率,提出B样条曲面正等测投影的建立方法,讨论用高性能的动态数组和Excel软件存储任意数量控制点的实现方法等关键技术。
采用Visual C++6.0为编程工具开发软件系统,实现了任意数量控制点的双三次B样条曲面生成。
通过将改进的算法和已有的算法进行比较我们得出改进算法的优点。
关键词:B样条曲面生成算法 deBoor、CoxB递推公式1引言B样条曲线曲面是实体造型,虚拟现实等CAD/CAM领域中广泛使用的几何造型工具。
B样条曲面具有与B样条曲线相同的局部支柱性、凸包性、连续性和几何不变性等性质。
与Bezier曲面相比,B样条曲面极为自然地解决了曲面片之间的连接问题。
它不仅继承了Bézier曲线曲面的所有优点,而且具有局部修改的性质,因此得到工业界的广泛认可。
B样条曲面的生成算法一直都是学者们的研究热点。
在施法中提出的B样条曲线生成的德布尔算法[1]的基础上,谭浩强将此算法推广到B样条曲面的生成[2];吕科,耿国华,周明全等人提出了基于样条曲面反算方法的B样条曲面生成算法[3];而近几年又有很多人提出了许多改进的算法,其中本文主要介绍了基于deBoor和CoxB递推公式构造B样条曲面基的曲面生成算法[4] 和提高双三次B样条曲面的生成效率的改进算法[9]。
2.已有算法介绍2.1基于样条曲面反算方法的B 样条曲面生成算法定义n,m 分别为u 向、v 向上待插值数据点个数,k=3,l=3,分别为生成曲面在u 向、v 向上的次数。
述的 B 样条曲面为 P ( u, w ) = W B T T UBV。
B样条曲面构建算法设计与实现

B样条曲面构建算法设计与实现B样条曲面是一种用于曲面重建和曲面拟合的方法。
它具有较好的数学性质和计算性能,被广泛应用于计算机图形学、计算机辅助设计和计算机辅助制造等领域。
本文将介绍B样条曲面的构建算法的设计与实现。
B样条曲面由B样条曲线构成,因此我们需要先了解B样条曲线的基本概念和算法。
B样条曲线是一种由多个控制点决定的曲线。
它的基本思想是通过插值或逼近的方式,将曲线上的点与控制点相对应,然后利用控制点之间的关系,生成曲线上的其他点。
B样条曲线的控制点决定了曲线的形状,在构建B样条曲线时,我们需要确定控制点的位置和权值。
B样条曲线的构建算法可以分为两个主要步骤:节点向量的确定和权值的确定。
节点向量是一组单调递增的参数值,用于描述曲线上的点的位置。
权值用于确定曲线上每个点的形状。
节点向量的确定是一个关键的步骤,它决定了曲线上的点的位置。
常用的方法有均匀节点向量和非均匀节点向量。
均匀节点向量指的是参数值的差值相等,例如[0, 1, 2, 3]。
在构建均匀节点向量时,我们需要确定控制点的个数和阶数。
控制点的个数决定了曲线上点的数量,阶数决定了曲线的平滑程度。
非均匀节点向量指的是参数值的差值不等。
它可以根据曲线的需要进行调整,用于处理曲线的局部形状。
权值的确定是另一个关键的步骤,它决定了曲线上每个点的形状。
在构建B样条曲线时,我们可以使用多种方法确定权值,例如Bezier曲线、B-spline曲线和NURBS曲线等。
在实际应用中,我们通常使用B-spline曲线来构建B样条曲线。
B-spline曲线是一种通过控制点和节点向量确定形状的曲线,它具有较好的数学性质和计算性能。
B-spline曲线的构建算法可以分为两个主要步骤:节点向量的确定和权值的确定。
节点向量的确定和B样条曲线的节点向量的确定方法类似,可以使用均匀节点向量和非均匀节点向量。
权值的确定方法也类似,可以使用Bezier曲线、B-spline曲线和NURBS曲线等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
B样条曲线曲面的性质及其生成算法的研究XXX(XXX学院数学与信息科学学院05级信本(2)班)摘要从B样条曲线曲面的定义入手,阐述了B样条曲线曲面的性质,在生成算法中提出了一个扩展B样条曲线曲面的新方法.扩展B样条曲线曲面的关键是为新增加的点确定节点值.生成算法的基本思想是:首先,B样条曲线和扩展部分在连接点处满足2GC连续,用能量极小化方法确定扩展部分的曲线形状,通过对曲线重新参数化使两部分曲线满足2C连续,进而确定新增加点的节点值.文章还讨论了运用该方法进行B样条曲面扩展,且以实例对新方法与其它方法进行了比较.关键词:B样条曲线; B样条曲面;参数化;曲线扩展Research On The Nature Of B-spline Curves And Surfaces AndTheir Generation AlgorithmYongning ZhangCollege of Mathematics and Information Science , Xianyang Normal University , InformationClass 05(2)AbstractFirst, the definitions of B-spline curves and surfaces are introduced, and then the nature of B-spline curves and surfaces are studied. On the final, a new generation algorithm on expansion of B-spline curves and surfaces is proposed. The key thought of expansion of B-spline curves and surfaces is to determine the value of the new points. The basic idea of generation algorithm is: First of all, B-spline curve and the extension of the connecting points in a row to meet with the energy minimization method to determine the extension of the curve shape of the curve through re-parameterized so that the two parts meet the continuous curve, and then determine the new value of the node points. The article also discussed the use of the method of B-spline surfaces expansion, and compared an example of the new method with other methods.Keywords: B-spline curve; B-spline surfaces; parameter; curve extension目录引言........................................................... - 3 - 1.B样条曲线.................................................. - 3 -1.1 B样条基函数的定义...................................... - 3 -1.2 B样条曲线的定义........................................ - 3 -1.3 B样条曲线的性质....................................... - 4 -1.3.1 严格的凸包性...................................... - 4 -1.3.2 分段参数多项式.................................... - 4 -1.3.3 可微性或连续性.................................... - 4 -1.3.4 几何不变性........................................ - 4 -1.3.5 局部可调性........................................ - 4 -1.3.6近似性............................................ - 5 -1.3.7变差缩减性........................................ - 5 -1.4 B样条曲线的分类....................................... - 5 -1.4.1均匀B样条曲线.................................... - 5 -1.4.2 非均匀B样条曲线.................................. - 6 -1.5 B样条曲线的生成算法.................................... - 7 -1.5.1B样条曲线的扩展................................... - 7 -1.5.2 2GC连续条件...................................... - 8 -1.5.3确定 的值........................................ - 8 -1.5.4确定节点u的值.................................... - 9 -1.5.5求控制顶点........................................ - 9 -2.1 B样条曲面的定义....................................... - 12 -2.2 B样条曲面的性质...................................... - 12 -2.3 B样条曲面的分类...................................... - 12 -2.3.1 均匀B样条曲面................................... - 12 -2.3.2 非均匀B样条曲面................................. - 13 -2.4 B样条曲面的生成算法.................................. - 14 -3.应用........................................................ - 15 - 4结论........................................................ - 16 - 谢辞.......................................................... - 17 - 参考文献...................................................... - 17 -引言B 样条曲线曲面以其直观性、连续性、局部可控性、使用方便、灵活等特点,在计算机图形学和CAD 中得到了广泛的应用,成为重要的曲线曲面描述工具. 在曲线曲面的设计中,经常需要对己有的B 样条曲线曲面进行扩展,并且要求扩展的曲线曲面满足一定的几何形状要求或者其它的工程要求.B 样条曲线曲面的扩展是在保持原有形状不变的情况下,使新的曲线曲面通过新给定的点.因此,B 样条曲线扩展问题,实际上是对给定B 样条曲线和扩展点的插值问题.目前曲线曲面插值有多种方法,一般通过反算控制顶点来实现.在一些CAD 系统中,B 样条曲线的扩展是通过增加一段Bezie:曲线,然后将扩展后的整个曲线转换为B 样条形式.1.B 样条曲线1.1 B 样条基函数的定义给定参数u 轴上的一个分割1{}(),(0,1,2,)i i i U u u u i +=≤=…,m ,由下列递推关系定义的,()i p N u 称为U 的p 次(p+1阶)B 样条基函数。
1,01,()0,i i i u u u N u +≤≤⎧=⎨⎩其他 (1-1-1) 1,,11,1111()()()i p i i p i p i p i i i p i u u u u N u N u N u u u u u ++-++++++--=+-- (1-1-2) 000=规定 其中,p 表示B 样条的次数(即为p+1阶),i u 为节点,U 为节点矢量。
1.2 B 样条曲线的定义:设01,,...,n p p p 为给定空间的n+1个控制顶点,01{,,...,}m U u u u =是m+1个节点矢量,称下列参数曲线,0()()ni i p i C u p N u ==∑ a u b ≤≤ (1-2-1)为p 次的B 样条曲线,折线01,,...,n p p p 为B 样条曲线的控制多边形。
其中次数p,控制顶点个数n+1,节点个数m+1具有如下关系:m=n+p+1图1 B 样条曲线 1.3 B 样条曲线的性质:1.3.1 严格的凸包性曲线严格位于控制多边形的突包内,如果1[,),1,i i u u u p i m p +∈≤<--C(u)位于控制顶点1,...,i i p p -所建立的凸包内。
图2 B 样条曲线的凸包性:1.3.2 分段参数多项式C(u)在每个区间1[,)i i u u u +∈上都是次数不高于p 的多项式。
1.3.3 可微性或连续性C(u)在每一曲线段内部是无限可微的,在定义域内重复度为k 的节点处,则使p-k 次可微或具有p-k 阶参数连续性。
1.3.4 几何不变性B 样条曲线的形状和位置与坐标系的选取无关。
1.3.5 局部可调性因为,()i p N u 只在区间1[,)i i p u u ++中为正,在其他地方均取0值,使得p 次的B 样条曲线在修改时只被相邻的p+1个顶点控制,而与其他顶点无关,当移动其中的一个顶点i p 时,只影响到定义在区间1[,)i i p u u ++上那部分曲线,并不对整条曲线产生影响。