B样条曲面拼接算法的设计与实现

2019-03-02 13:17吴丽娟ABEYSINGHEARACHCHIGESasikalaSewwandi张心慈
关键词:样条控制点曲面

吴丽娟, 李 博, ABEYSINGHE ARACHCHIGE Sasikala Sewwandi, 张心慈

(1. 沈阳师范大学 物理科学与技术学院, 沈阳 110034; 2. Faculty of Social Sciences and Languages, Sabaragamuwa Uniwersity, Sri Lan Ka 70140)

0 引 言

曲线、曲面技术是计算机图形学研究的重要内容之一,曲面拼接技术在工程设计中更具有广泛的应用,包括卫星轨道、导弹弹道、人体轮廓、汽车和飞机的外形都需要用曲线来模拟。

B样条理论早在1946年由舍恩伯格提出,1972年,德布尔与考克斯总结给出了关于B样条的一套标准方法,即递推定义,由于递推定义的性质,使得计算非常方便且稳定,以此为基础,1974年美国通用汽车制造公司的戈登和里森费尔德将B样条理论应用于形状描述,提出了曲线曲面设计的B样条方法。

多年来,国内许多学者也一直致力于CAGD领域的理论及应用研究,在国内外学者的研究下产生了多种曲面拼接的方法,Kuriyama提出给定N-1条边界曲线构造任意N边域曲面的方法,本文在此基础上给定N-1条边界曲线求出跨界导矢方法生成B样条过渡曲面,进行曲面拼接,构造的曲面与周围曲面处处c1连续[6-9]。

1 B样条曲线曲面的构建

1.1 B样条曲线的定义

(1)

式中Pi是控制多边形的顶点集,Ni,k(t)是定义在节点矢量T上的k次B样条基函数,表示第i个k次(k+1)阶B样条基函数。分别由节点向量U和V按de Boor-Cox递推公式推导得出。已知控制点生成的B样条曲线如图1所示。

图1 B样条曲线的生成Fig.1 Generation of B-spline curve

1.2 B样条曲面的构建

(2)

式中给定2个方向的控制顶点网格u和v以及它们各自的节点向量u=[u0,u1,…,up+p]和v=[v0,v1,…,un+q],节点矢量U中含有m+1个节点,节点矢量V中含有n+1个节点,此时构成一张控制网格称为B样条曲面的特征网格。Ni,p(u)和Nj,q(v)是节点向量U和V按de Boor-Cox递推公式决定的B样条混合函数。

已知36个控制点,通过给定的控制点生成成一个6×6的网格,对B样条曲面基函数进行算法设计,分别从u向和v向进行赋值,让控制点与基函数相乘求和,从而生成对应的型值点,连接型值点,通过编程进行循环操作,从而生成3次B样条曲面[10-13]。

3次均匀B样条曲面节点矢量U、V满足条件:

3次准均匀B样条曲面节点矢量U、V满足条件:

生成的均匀B样条曲面、准均匀B样条曲面如图2、图3所示。

图2 均匀B样条曲面Fig.2 Uniform B-spline surface

图3 准均匀B样条曲面Fig.3 Quasi-uniform B-spline surface

2 B样条曲面的拼接

2.1 曲面拼接流程图

通过给定的控制点构建3片待拼接B样条曲面,求出带拼接曲面边界曲线上的型值点,通过反算生成控制点,进而生成跨界曲线;定义跨界曲线,求出跨界曲线的跨界导矢;根据映射和约束条件生成拼合曲面,进行B样条曲面拼接。系统设计流程图,如图4所示。

设置控制点,构建3片待拼接B样条曲面→根据边界曲线上的型值点反算控制点→生成跨界曲 线→求出跨界曲线的跨界导矢→根据映射和约束条件,定义拼接曲面→生成拼接曲 面

图4系统设计流程图
Fig.4 Systemdesignflowchart

2.2 算法实现

2.2.1 B样条曲面拼接算法的设计

令N边域曲面的参数域Ω是R2空间中一个单位正N边形,其中心在原点O处,边数为N,顶点记为Vi(i=0,1,…,n)。

对于单位正多边形,任意j条边记Ej(s)=(1-s)Vi+sVi,s∈[0,1],参数域Ω中任意一点V到边Ej的距离根据欧几里得标量积公式可得:

(7)

式中:Zj是边是边Ej-1和Ej+1延长线交点。

在参数域Ω中,任意一点V的坐标为:

(8)

定义B样条曲线qj(t)为给定的N边域曲面的第j条跨界曲线,rj(t)(j=0,1,…,n-2),t∈[0,1]为其跨界导矢,则定义差值于跨界曲线qj(u)和qj-1(v)及其相应跨界导矢量rj(u)和rj-1(v)的映射Pi为:

定义插值于跨界曲线qi(t)及其跨界导矢rj(t)(t=0,1,…,n),t∈[0,1]的N边域曲面具有如下形式:

由上式可知,N边域曲面插值于N-1条边界曲线及其跨界导矢,整体c1连续。

2.2.2 构建跨界B样条曲线

通过B样条待拼接曲面的构建,可以已知边界曲线上的型值点列Ti(i=1,2,…,n),从而反算控制点Vi=(i=1,2,…,n+2) 算法如下:

3次均匀B样条曲线的矩阵表示:

(12)

则曲线的首点为

(13)

曲线的末点为

Tn=Vn+2

(14)

由式(12)~式(14)可得,预求的顶点数为N+2,而方程数仅为N,尚需补充2个适当的边界条件:

首端切矢

(15)

末端切矢

(16)

解式(13)~式(16)方程式可得全部控制点Vi。

由公式1.1得跨界曲线:

(17)

2.2.3 求跨界B样条曲线的跨界导矢

想要得到的曲面处处c1连续,主要在于对边界曲线的基函数求一阶导数,即由B样条曲线基函数可得:

由此得到矩形域曲面的跨界曲线的跨界导矢:

(19)

图5 N边域曲面的跨界曲线及其跨界导矢Fig.5 N-sided surfacetransboundary curve and its transboundary vector

由此已知3条跨界曲线f1(u)f2(u)和f3(v)及其跨界导矢g1(u)g2(u)和g3(v),假设所有的跨界曲线及其跨界导矢都定义于区间参数[0,1]。矩形域曲面的跨界曲线的跨界导矢如图5所示。

2.2.4 构造拼接曲面

则由公式(9)定义差值于跨界曲线及其相应跨界导矢映射,可得插值于跨界曲线f1(u)f3(v)并且定义于参数域[0,1]*[0,1]的曲面:

(20)

插值于跨界曲线f2(u)和f3(v)及其跨界导矢g2(u)和g3(v)并且定义于参数域[0,1]*[0,1]上的矩形域曲面:

(21)

定义过渡曲面,参数区间[0,1]*[0,1],需满足的约束条件:

可得拼接曲面定义:

G(u,0)=(v-1)2(2v+1)F1(u,v)+v2(3-2v)F2(u,v)

(24)

由此可知,构建的拼接曲面G(u,v)插值于3条给定跨界曲线f1(u)、f2(u)和f3(v)及其跨界导矢g1(u)、g2(u)和g3(v),曲面整体c1连续。带拼接曲面和拼接后的曲面如图7、图8。

图6 待拼接曲面Fig.6 Surface to be spliced

图7 拼接后的曲面Fig.7 Surface after splicing

3 结 论

通过上述内容可知,应用给定N-1条边界曲线的方法实现生成的拼合曲面处处c1连续,与c1连续相比更加平滑,同时用此方法构造曲面的优点在于给定的边界曲线及其跨界导矢可以是任意的B样条曲线,同时给定的跨界导矢可以相互独立,不需满足各种约束条件,运用本方法可以精确地表示3次规则曲线曲面,从而能用统一的数学形式表示规则曲面和自由曲面,能够更容易地控制和实现曲线曲面形状[14-18]。

猜你喜欢
样条控制点曲面
简单拓扑图及几乎交错链环补中的闭曲面
顾及控制点均匀性的无人机实景三维建模精度分析
对流-扩散方程数值解的四次B样条方法
相交移动超曲面的亚纯映射的唯一性
三次参数样条在机床高速高精加工中的应用
NFFD控制点分布对气动外形优化的影响
三次样条和二次删除相辅助的WASD神经网络与日本人口预测
关于第二类曲面积分的几个阐述
基于样条函数的高精度电子秤设计
基于风险管理下的项目建设内部控制点思考