[发明专利]一种渐进最优的三角网格重复顶点快速去除方法有效
申请号: | 201310376046.9 | 申请日: | 2013-08-26 |
公开(公告)号: | CN103425787A | 公开(公告)日: | 2013-12-04 |
发明(设计)人: | 王文珂;王攀;蔡勋;李思昆;曾亮;沈恩亚;王怀晖;刘华海 | 申请(专利权)人: | 中国人民解放军国防科学技术大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 国防科技大学专利服务中心 43202 | 代理人: | 郭敏 |
地址: | 410073 湖*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种渐进最优的三角网格重复顶点快速去除方法,目的是高效的去除三角网格中重复顶点。技术方案是利用有序集合的循环不变性与SSE4快速内存拷贝技术,在只进行一次顶点全排序的情况下,使用二分查找方法实现重复顶点的快速定位与去除。采用本发明可以在整个过程中仅进行一次全局顶点排序操作,多次使用二分查找方式进行顶点查询,查询速度快,极大的减少了拷贝数据量,整个时间计算复杂性接近O(nlogn)量级,达到了此类方法的最优时间下界,效率高且实现简单。 | ||
搜索关键词: | 一种 渐进 最优 三角 网格 重复 顶点 快速 去除 方法 | ||
【主权项】:
一种渐进最优的三角网格重复顶点快速去除方法,其特征在于包括以下步骤:第一步,申请两个长度为3n的一维数组T与S,T与S中的元素为三角顶点,初始化各个顶点为0,其中n为几何图形三角面片个数,T与S每个元素大小为三个32位浮点数;初始化数组Vx、Vxy、Vxyz为长度3n的数组,每个元素为三个32位浮点数;初始化顶点索引数组F为长度3n的数组,每个元素为一个32位整数,F中的元素初始化为0;第二步,初始化变量i=0,istr=0;第三步,采用二分查找方法查找T,去除V中的重复顶点vi,得到没有重复顶点的数组T,V是存放3n个三角形顶点的数组,每个顶点由三个32位浮点数构成,每个浮点数指每个顶点的X坐标、Y坐标、Z坐标,每三个顶点再组成一组,表示一个三角面片,共计n个三角面片,方法是:3.1读取V中的顶点vi={xi,yi,zi},xi,yi,zi分别为vi的X坐标、Y坐标、Z坐标;3.2根据顶点vi(xi,yi,zi)的X坐标值xi大小,采用二分查找方法查找T中的顶点,若在T中找到了X坐标值等于xi的顶点,将T中的X坐标值为xi的顶点全放入集合Vx,转3.3;若在T中未找到X坐标值等于xi的顶点,将此时二分查找方法得到的位置值赋给变量istr,转第五步;3.3在Vx中根据顶点vi(xi,yi,zi)的Y坐标值yi大小,利用二分查找方法查找与yi相同的顶点,若在Vx中找到Y坐标值等于yi的顶点,将Y坐标值为yi的顶点全放入集合Vxy,转3.4;若在Vx中找不到Y坐标值等于yi的顶点,将此时二分查找方法得到的位置值赋给变量istr,转第五步;3.4在Vxy中根据顶点vi(xi,yi,zi)的Z坐标值zi大小,利用二分查找方法查找与zi相同的顶点,若在Vxy中找到Z坐标值等于zi的顶点,将Z坐标值为zi的顶点全放入集 合Vxyz,记集合Vxyz中第一个元素是数组T中的第istr个元素,转第四步;若在Vxy中找不到Z坐标值等于zi的顶点,将此时二分查找方法得到的位置值赋给变量istr,转第五步;第四步,如果Vxyz不为空,则说明顶点vi为T中存贮的重复的顶点,执行第六步;若Vxyz为空,则说明顶点vi目前不是重复顶点,执行第五步;第五步,将顶点vi插入数组T:采用英特尔流式单指令多数据扩展指令集4即SSE4指令集技术,复制数组T中的元素集合T[istr,m]到临时缓冲数组S[istr+1,m+1]中,然后将vi复制到数组T中序号为istr的元素的位置即作为元素T[istr],再复制S[istr+1,m+1]到T[istr+1,m+1],所述T[istr,m]是指数组T中,第istr个元素到第m个元素之间的一段连续空间上的所有数组元素,T[istr+1,m+1]是指数组T中,第istr+1个元素到第m+1个元素之间的一段连续空间上的所有数组元素,S[istr+1,m+1]是指数组S中,第istr+1个元素到第m+1个元素之间的一段连续空间上的所有数组元素;第六步,令i=i+1并清空集合Vx、Vxy、Vxyz,若i>3n‑1则执行第七步,否则转第三步;第七步,设置计数变量Counter=0,i=0;第八步,在原始顶点集合V中选取顶点vi,使用二分查找方法查找T,分别沿X、Y、Z方向在集合T中查找顶点vi,方法是:8.1读取集合V中的顶点vi={xi,yi,zi};8.2根据顶点vi(xi,yi,zi)的X坐标值xi大小,采用二分查找方法查找T中的顶点,在T中找到X坐标值等于xi的顶点,将T中的X坐标值为xi的顶点全放入集合Vx,转8.3;8.3在Vx集合中根据顶点vi(xi,yi,zi)的Y坐标值yi利用二分查找方法查找与vi具有 相同yi顶点,将Y坐标值为yi的顶点全放入集合Vxy,转8.4;8.4在集合Vxy中根据顶点vi(xi,yi,zi)的Z坐标值zi大小利用二分查找方法查找与vi具有相同zi的顶点,将Z坐标值为zi的顶点v'i在数组T中的序号赋给变量Idxxyz,转第九步;第九步,将变量Idxxyz的值赋给顶点索引数组F中序号为Counter的元素F[Counter];第十步,计数变量Counter增1,i增1,并清空集合Vx、Vxy;第十一步,判断i是否大于3n‑1,若i大于3n‑1,说明所有顶点已经处理,得到了正确的顶点索引数组F,转第十二步,否则转第八步;第十二步,输出没有重复顶点的顶点数组T与顶点索引数组F,结束。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科学技术大学,未经中国人民解放军国防科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201310376046.9/,转载请声明来源钻瓜专利网。
- 上一篇:一种磁盘文件的快速检索方法
- 下一篇:一种弹性透气吸湿面料