基于等值线法求取NURBS曲面与隐式曲面交线的原理,我们提出了一种局部加密的改进算法。通过局部加密算法减少正则网格单元顶点处^值计算数目。采用拟牛顿迭代法求交点、B样条曲线拟合参数域上的交线等改进算法,提高了NURBS曲面与隐式曲面求交算法的效率和精度,并通过MATLAB编程进行了验证。
一、全网格遍历法求解NURBS曲面与隐式曲面交线
1、基本原理
设NURBS曲面为x=g1(u,v),y=g2(u,v),z=g3(u,v),控制顶点Pij(i=0,1,…,n1;j=0,1,…,n1)呈拓扑矩形阵列,形成一个控制网格。ωij是与顶点Pij联系的权因子。Bik1(u)和色,Bjk2(v)分别为u向k1次和v向k2次规范B样条基。
设隐式曲面为f(x,y,Z)=0,其中厂的定义域为Ωf,则NURBS曲面与隐式曲面的交线方程为:f(g1,g2,g3)=h(u,v)=O的求解过程实际上就是曲面求交的过程。
2、全网格遍历求解多项式方程
(1)正则化网格的生成
曲面参数化后,将参数域Ωg沿u、v方向分别分为nu,nv份。每一个矩形单元△i,j的四个顶点分别为(ui,vj), (ui,vj+1),(ui+1,vj+1), (ui+1,vj), (i=0,1,…,nu-1;j=0,1,…,nv-1)。对应的函数值为hij ,hi,j+1,hi+1J+1,hi+1J(i=0,1,…,nu-l;j=0,1,…,nv-1)。
(2)网格单元与等值线的交点计算
网格单元与等值线交点计算,主要是计算单元各边与等值线的交点,可以采用顶点判断和边上插值的方法计算交点,具体步骤如下:
1)若hiJ≤0,则顶点(ui,uj)记为“-”,否则记为“+”;
2)若单元的4个顶点都为“+",或全为“-”,则网格单元与等值线h(u,v)=O无交点,否则转到3);
3)对于两个顶点异号的单元边,采用拟牛顿迭代法计算等值线与这条边的交点,如图2中红色圆点,设hi+1,J+1,为“+”,hi+1,j为“-”,则交点(ut,vt)为:
vt=Vi+l(i=2,3,…,n)。该单元其它边上的交点可用相同方法求得。
3、等值线的生成
逐个计算出每一个网格单元与等值线的交点,用三次B样条曲线按顺序拟合这些交点,最终得到等值线h(u,v)=0。
需要注意的是,采用B样条曲线拟合单元内的交点,必须首先确定这些交点的先后次序。对于形状比较简单的等值线,可用其关键信息判断交点的先后次序。例如与u向传递的波浪面相交时,交点可按照其u坐标值的大小排序;与圆柱面相交时交点可按照交点和圆心的连线与水平线的夹角大小排序。对于形状比较复杂的等值线,目前还未找到完美的解决方法,可采用蚁群算法保证各点之间的总距离最小,以此为原则对数据点进行排序。
综上所述,全网格遍历法求解多项式方程h(u,v)=0的流程。
数据取自采用全网格遍历法编制的matlab程序求解NURBS曲面与圆柱曲面交线过程。本文所用NURBS曲面由201×401个型值点拟合而成,程序运行平台机型配置为AMD Athlon四核2.8GHz,8G内存。
当曲面曲率变化剧烈或者对交线精度要求较高时,往往需要较小的网格步长。全网格遍历要求对每个单元都要求解,由表1可知,当网格密度增加时,该算法计算量会成倍增加,导致其耗时也会成倍增加。在网格步长较小时,全网格遍历求解多项式h(u,v)=O效率很低。
从表1中不难看出,随着网格步长的减小,需要计算顶点处危值的数目也越多,而单独计算各顶点处h值所耗时间占整个求交程序耗时的绝大部分。由此可知,想要提高求交算法的效率,就需要在相同精度要求下,尽量减少尼值的计算数目。因此在求交过程中引入局部加密算法,期望通过减少危值计算数目,提高求交算法的效率。
二局部加密算法在NURBS曲面与隐式曲面求交中的应用
1、选定正则化基网格
局部加密算法首先需要选定一个网格密度较疏的正则化基网格,基网格的网格步长取△u=△v=△=O.1。求出每个网格单元四个顶点处的函数值h(u,v),运用全网格遍历求解算法求出网格单元与等值线的交点,如图4中红色星号所示。将顶点处h值储存在矩阵危。h0(i,j),(i=1,2,…,1/△+1)中。那么h0(i,j)=h((i- 1)△,(j-1)△)。
2、确定加密范围
以网格步长等于△为例,确定加密范围的方法如下:
1)将各单元与等值线的交点排序,排序方法与全网格遍历法中拟合等值线时交点排序的方法相同,排好序的交点分别记为al,a2,…,ak,ak+l,…,an(k=1,…,n)。对于单元i,各顶点编号如图5所示。以Ai为单元i的参考基点,则Ai的坐标为:uAi=fix [min(uk,uk+l)/△]△;:uAi=fix [min(vk,vk+l)/△]△,其中fix为取整函数。单元中Bi,Ci,Di的坐标可通过参考基点Ai的坐标求得,例如uBi=uAi+△, VBi =VAi;
2)如图6所示,按照交点顺序依次找到单元参考基点Al,A2,…,Ai,Ai+i,…,Am(=l,…,m),由单元参考基点依次确定包含交点的每一个单元。
所求等值线必定在这个加密范围内。
3、网格加密
确定需要加密的网格范围后,将加密范围内的每个单元均分为四个小的单元。
4、数据处理
每一次加密网格后,需要更新顶点处h值,为避免重复计算,需要对数据做一些特殊处理:
1)确定加密区域所在的最小矩形域。
矩形域D1DZD3D4即为加密区域所在的最小矩形域。
2)生成判断矩阵。加密最小矩形域,将矩形域内每一个单元均分为四个小单元。
为便于后续计算,在加密后引入判断矩阵判断最小矩形域内的顶点是否在加密区域内。
3)更新网格顶点处h值,并将其储存在矩阵hK中。当K=1时,h1(i,j)=ho(i+VD1/△,j+VD1/△)。当K=2,3时,计算hK。
5、网格加密后单元与等值线交点的计算
在每一次加密网格后,都需要重新计算单元与等值线的交点。
小知识之NURBS
NURBS是一种非常优秀的建模方式,在高级三维软件当中都支持这种建模方式。NURBS能够比传统的网格建模方式更好地控制物体表面的曲线度,从而能够创建出更逼真、生动的造型。
轻松上手!十大远程控制电脑软件推荐
如今,网上办公、异地协助等场景越来越普遍。你有没有碰到过这样的疑惑:在家办公,却发现公司电脑内有秘密文件;父母在家乡碰到电脑问题,但你不能亲身指导和帮助;团队人员分散在各个地区,急缺实时共享屏幕协同工作。一款好用的远程控制软件就能轻松解决各种问题。今日,便给大家推荐十款超实用的远程控制软件,让您可以随便进行远程控制。一...
秒懂!电脑屏幕实时监控软件如何帮助你管理团队
一则新闻引起了人们的密切关注。一家初创公司雄心勃勃地开启了一个关键项目,投入了大量的人力、物力和财力。但是,当项目到期时,发觉进度严重滞后,结论远未达到预估。通过调查,发觉员工在工作时间常常走神,用公司电脑刷小视频,打游戏,处理私人事务,造成工作效率极低。在目前的工作场所,团队协作面临很多考验,如何确保员工的高效工作成...
监控电脑屏幕的软件有哪些?
随着电脑使用的崛起,一些令人堪忧的问题也逐渐浮出水面。你有没有担忧过自己的电脑屏幕在不经意间被别人窥视?或者,你是否需要一个软件来监督孩子或职工的电脑使用,以保证她们远离不良记录?今天,我们来谈谈那些可以监管电脑屏幕的软件,以及它们怎样成为数据世界的守卫者。一、为什么需要电脑屏幕监控软件?电脑屏幕上的数据通常包含了我们...
数据安全小贴士:文件夹加密的简单方法
在这个信息爆炸的时代,我们每天都在与大量数据共处。从工作文件到家庭照片,从学习资料到个人信息,这些数据成为了生活中不可或缺的一部分。可是,你有没有想过,这些数据,特别是存储在电脑中的文件夹,合不合适?根据最新调研,全球每年数据泄漏造成的经济损失做到数千亿美元,数据泄漏已成为黑客入侵的重灾区。那么,怎样保护我们的文件夹免...
移动硬盘如何加密码保护?
在这个信息爆炸的时代,我们每天都在与大量数据共处。从工作文件到家庭照片,从学习资料到个人信息,这些数据成为了生活中不可或缺的一部分。移动硬盘作为我们存储和携带数据的重要手段,其安全性也越来越受到重视。你有没有想过,你的移动硬盘无意间可能成为了数据泄露的“多发区”?近些年,随着网络安全事件的高发,数据泄漏风险也不断攀升。...