预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

B样条曲面生成算法的研究与改进 摘要 本文首先介绍了B样条曲面生成的已有算法:基于B样条曲线生成的德布尔算法的B样条曲面的生成算法、基于样条曲面反算方法的B样条曲面生成算法。接着介绍了两种双三次B样条曲面生成的改进算法:1.基于deBoor和CoxB递推公式构造B样条曲面基的曲面生成算法,2.提高双三次B样条曲面的生成效率的改进算法。第2种算法能显著提高效率,提出B样条曲面正等测投影的建立方法,讨论用高性能的动态数组和Excel软件存储任意数量控制点的实现方法等关键技术。采用VisualC++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)=。按网格V中的行构造w向的曲线,则可得到四条B样条曲线: 其中:Bj,3(w)为与顶点Vij对应的B样条基函数;Vij 为控制顶点。 当参数w在[0,1]内取值w1时,则可分别在曲线Q1(w)、Q2(w)、Q3(w)、Q4(w)上得到四个点q1、q2、q3和q4。若以该 四点作为新的特征多边形顶点再构造u向的B样条曲线: 则P(u,wl)为曲面片上的一条曲线。当u和w在[0,1]之间遍历时,就可以得到一张双三次B样条曲面片,如图1所示。可通过正算,用追赶法解方程组获得控制网格,然后反算获得曲面,再进行插值。如图2为给定点云数据通过反求后,滤掉不合格的点,再生成的控制网格和曲面。 2.2基于B样条曲线生成的德布尔算法的B样条曲面的生成 2.2.1B样条曲线控制顶点及控制多边形的生成[5] (1)B样条曲线采用顶点定义,控制顶点的生成有下面几个过程来完成:程序先对控制顶点的坐标赋值:Contr->x=0;Contr->y=0;然后将鼠标所在点的坐标赋给控制顶点:; 调入画直线函数,以坐标点(x,y)为中心,画小十字线:line(x-2,y,x+2,y);line(x,y-2,x,y+2). 此时,一个点的输入结束,重复这个过程便会在屏幕上得到一系列的控制定点。点的输入结束后,调入直线命令,依次连接控制定点,即在屏幕上生成控制多边形。 (2)求B样条曲线上的点 控制多边形确定以后,B样条曲线的形状取决于B样条曲线的次数,求B样条曲线上的点可采用德布尔算法的递推公式。 这里P(u)为所求曲线上的点。对于求出的B样条曲线上的一系列点,依次用小直线段连接。由于程序中选取的步长非常小,所以在屏幕上显示出所定义的一条眼观光滑的B样条曲线。 2.1.2B样条曲面控制网格的生成[1] 生成过程如下:程序中用文件输入曲面的控制顶点;选取两个参数方向的次数分别用k与l表示,其取值范围:;选取两个参数方向的合适步长,将德布尔算法推广到曲面,计算并显示曲面上每个参数方向的对应于定义域内的眼观光滑的等参数线。其生成B样条曲面的算法如下: 设给定曲面定义域一对参数值(u,v),欲求该B样条曲面上对应的点P(u,v)可以先沿任一参数方向譬如先沿v参数方向,按如下步骤进行:首先以参数值对沿v参数方向的m+1个控制多边形执行用于计算B样条曲线上点的德布尔算法,求得m+1个点作为中间顶点,构成中间多边形。然后,以u参数值对这中间多边形执行B样条曲线的德布尔算法,所得一点即所求B样条曲面上一点P(u,v)。给出一系列u,v值,就得到曲面上的一系列点。 光滑连接生成曲面:对于求出的B样条曲面上的一系列的点,依次用小直线段连接,即在屏幕上显示出所定义的一张眼观滑的等参数线,即B样条曲面片。下图即为屏幕输出的控制网格及曲