您好,欢迎来到九壹网。
搜索
您的当前位置:首页空间点集Voronoi图的海量构造算法及可视化技术

空间点集Voronoi图的海量构造算法及可视化技术

来源:九壹网
维普资讯 http://www.cqvip.com 第33卷第5期 2007年1O月 兰州理I工大学学报 V01.33 No.5 Journal of Lanzhou University of Technology Oct.2007 文章编号:1673—5196(2007)05—0099—06 空间点集Voronoi图的海量构造算法及可视化技术 李俊琛,李旭东,刘德学 (兰州理工大学甘肃省有色金属新材料省部共建国家重点实验室,甘肃兰州730050) 摘要:设计空间点集Voronoi图的增量式外存算法以及空间点集Voronoi图的任意平面可视化剖分技术,以“点一线 一面一体,’的空间数据结构为基础,实现在指定空间区域内生成Voronoi图的新方法.提出的算法数据结构清晰合理, 数据交互方案简单有效且无内存,发展的可视化技术可以对空间点集Voronoi图进行任意的平面剖分,实现 了三维Voronoi晶胞集合体内部结构的可视化. 关键词:增量算法;Voronoi图;海量空间点集;可视化技术 中图分类号:TP311.1 文献标识码:A Massive constructional algorithm for Voronoi diagram with spatial point sets and their visualization technique LI J un-chen,LI Xu—dong,LIU De-xue (State Key Laboratory of Advanced Non-ferrous Materials,Lanzhou Univ.of Teeh.,Lanzhou 730050,China) Abstract:The incremental out-of-core algorithm for 3D Voronoi diagram with spatial point sets(VDSPS) was designed.A visualization technique for an arbitrary plane intersecting the constructed Voronoi diagram was also included.An improved algorithm for constructing the Voronoi diagram in a designated region was implemented by means of“point—line-plane-solid”spatial data structure.The algorithm presented was technically logical and valid,and its associated data structure was rational as wel1.Meanwhile,the format of data—exchange was simple and efficient,which eliminated restrictions on computer memory storage.The developed visualization technique could treat any of random plane that intersected the 3D Voronoi diagram showing visually the internal structure of the 3D Voronoi diagram as a result. Key words:incremental algorithm ̄voronoi diagram;massive spatial point sets;visualization technique Voronoi图是计算几何学科一个关于空间划分 的重要数据结构[1],多年来,平面点集的Voronoi图 已经广泛地应用在科学研究与工程实际中[2 ].随 着计算机技术的普及和发展,空间点集Voronoi图 的应用也越来越受人们的重视. 间数据交互的增量算法,算法的时间复杂度为 0( 。),有效实现了数以万计三维Voronoi晶胞集 合体的构造.在算法构造的过程中,提出在用户指定 空间区域构造Voronoi图的方法,处理计算误差可 能产生的“裂缝”.为了显示三维Voronoi晶胞集合 体的内部构造,本文还介绍一种可视化技术,对三维 Voronoi晶胞集合体的内部构造进行任意平面的可 视化剖分. 实验证明,三维情况下Voronoi图的几何信息 数据结构比较复杂,设计用三个三重嵌套结构体数 组处理数据的交互、拓扑关系的表达,可以使程序清 晰易读,同时,结构体数组能够成块存储几何信息数 据,避免了信息的混乱与冲突.在此基础上,与构造 海量平面点集Voronoi图类似,设计基于硬盘上的 外部文件为存储空间、动态实现程序与外部文件之 收稿日期:2006~10—10 基金项目:国家自然科学基金(50571042) 作者简介:李俊琛(1981一),男,甘肃合作人,博士生 1 Voronoi图的定义 ’ 设P一(P-,Pz,…,P )mR。是三维欧氏空间内 的 个点,d(P,Pi)为P和P 问的欧几里德距离, 将由 (Pi)一n(P∈R。fd(P,P )<d(P,P ))所 给出的对空间的分割称为以P一(P-,Pz,…,P )c R。为空间点集的Voronoi图, ( )( 一1,2,…, ) 维普资讯 http://www.cqvip.com ・100・ 兰州理工大学学报 第33卷 为Voronoi多面体,简称Voronoi晶胞,Pi( 一1,2, ,72)称为Voronoi晶胞的生成子. …2构造海量空问点集Voronoi图的增 量算法 2.1数据结构与数据存储 三维情况下的数据结构与数据存储与二维情况 相类似,这里简单介绍一下三个三重嵌套结构体数 组所包含的信息. , 1)嵌套结构体数组file1: ①file1.Polyhedron—Order;多面体的序号. ②file1.Face_Num;此多面体上面的个数. ③file1.Nucl_X,file1。Nucl—Y,file1.Nucl—Z; 此多面体的生成子坐标. ④file1.Polygon[/].Face—Order;此多面体中 第i个面的序号(如图1a中厂1,厂2,…, 厂8). ⑤file1.Polygon[-i].Edge—Num;此多面体中 第i个面的边数. ⑥file1.Polygon[ ].Mark—X,file1.Polygon [ Mark_y,file1.Polygon[i].Mark—z;此多面体 中第i个面的中心点坐标. ⑦file1.Polygon[-i].Vertex[j].X,file1.Poly— gon[/].Vertex[j].Y,file1.Polygon[i].Vertex ̄j]. z;此多面体中第i个面上第 个顶点的坐标. 2)嵌套结构体数组file2: ①file2.Polyhedron_Order;多面体的序号. ②file2.Polygon—Edge[,-i].Face—Order;此多 面体中第i个面的序号. ③file2.Polygon_Edge[i].Boundary[j].Edge —Order;此多面体中第 个面上第 条边的序号(如 图1a中.厂1面周围s1,s2,…,s7边). ④file2.Polygon—Edge[/].Boundary[j].X1, file2.Polygon—Edge[ ].Boundary[力.y1,file2. Polygon_Edge[i].Boundary[j].Z1;此多面体中第 i个面上第J条边的起点坐标。 ⑤file2。Polygon—Edge[/]:Boundary[j].x2, file2.Polygon—Edge Eli.Boundary[力.y2,file2。 Polygon_Edge[-/].Boundary[j]. ;此多面体中第 i个面上第 条边的终点坐标. 3)嵌套结构体数组file3: ①file3.Polyhedron_Order;多面体的序号。 ② file3.Face—Polyhedron[i]。Face—Order;此 多面体中第 个面的序号。 ③file3.Face—Polyhedron[i].Face—Mark;此 多面体中第i个面的属性 界面或内部面). (b) 图1三维Voronoi晶胞结构示意图 Fig.1 Schematic diagram of aggregate consisting of 3D Voronoi cells ④file3.Face_Polyhedron[-i].Aside—Polyhed- ron_Order;此多面体中第 个面外侧多面体的序号 (如图1b中-厂1面为V(P )的第1个面,它的外侧多 面体为 (P2)). ⑤file3.Face—Polyhedron[-/].Edge—Face[j]. Edge_Order;此多面体中第 个面上第 条边的序 号. ⑥file3。Face—Polyhedron[/].Edge—Face[j]. Aside_Face_Order;此多面体中第i个面上第 条 边相邻的面的序号(如图1a中-厂1面Ss,S ,S 各边 相邻的面的序号为厂5,厂4,厂2). 2.2面的法向量与顶点排序 构造二维Voronoi图时,每一个Voronoi晶胞 的顶点在右手系中都是按逆时针方向排序的.显然, 在三维情况下也要解决Voronoi晶胞每个面上顶点 的排序问题,这是构造空间点集Voronoi图的一个 核心问题.解决这个问题的思路是:首先,需要区分 平面的两个侧面.面向物体内部的一面为“内侧”面, 维普资讯 http://www.cqvip.com 第5期 李俊琛等:空间点集Voronoi图的海量构造算法及可视化技术 面向物体外部的一面为“外侧”面.然后,使得空间中 的每一个Voronoi晶胞,当观察者从晶胞外向晶胞 内看时,晶胞的每个“外侧”面上的顶点都是按逆时 针方向排序的(如图la).具体处理的方法如下: 不再赘述.但是生成随机点 后怎样构造V(P ), V(P )生成后怎样修改邻近受影响晶胞,这两个构 造空间点集Voronoi图过程中出现的问题较为复 杂. 在图2中P一点落在V(P0Id)( (P。Jd)为整个 立方体)晶胞内,用点P一与点PoId之间垂直平分面 1)构造V(P )的子程序流程. 步骤1:判断点 落在哪个Voronoi晶胞 的方程与V(P oI )的各面依次作交线,在,1面上作 出 、w。两点之后,以拓扑关系找到w 所在边相 邻的面.厂5,由于w 所在的边为,-面与,5面的公 共边,在.厂5面上必有一条交线,做出Ws点.以 V(P )内(做P 与先前所有生成子之间的距离,则 Pi落人与P 距离最小的生成子所在的Voronoi晶 胞内),从外部文件读取此晶胞数据到内存. 步骤2:在此晶胞内做出P 与P 的垂直平分 P—P。 为垂直平分面的法向量,判断w 与 w 的差积是否与垂直平分面的法向量同向,如 果方向相同,则符合顶点按逆时针方向排序的原则, 按w。—wz的顺序排列顶点;反向则以wz—w 进 行排序.图2所示为同向的情况,所以W 一Wz为 正确的排序,以拓扑关系找到wz所在边相邻的面 .厂3,在.厂3面上做出下一顶点L。,用同样的方法做出 顶点L 、L 、L 直到回到W 点,这样 (P一)的第 一个面构造完成,并且对于 (P一)来说,第一面 “外侧”面上的顶点都是按逆时针方向排序的.在修 改V(P。Id)时,对这个P—P。 的垂直平分面生成的 新面,各顶点的排序与它们在 (P一)上的排序恰 恰相反,即这个公共面对V(P。 )来说顶点依次是 L6,L5,…,L1. 图2 Voronoi晶胞的一个面上的顶点的排序与该面的 法向示意图 Fig.2 Schematic diagram of sequential arrangement of vertexes sitting in a plane of a Voronoi polyhedron nad along normal direction to plane 2.3算法具体步骤 构造空间点集Voronoi图增量算法 。 的主流 程图与构造平面点集Voronoi图增量算法的主流程 图[】o]完全相同,算法具体步骤也是类似的,这里就 面为V(P )的第一面,此面一定是内部面. 步骤3:由于 (Pi)第一面的各新边分别在 V(P )的各面上,通过拓扑关系可以找到以这些面 为公共面的其他Voronoi晶胞,这些晶胞内同样能 做出V(P )的一个面,循环做出这些内部面. 步骤4:检测六个边界面备用结构体数组中是 否存储有边界线段,如果存在这样的线段,作出相应 边界上的面. 步骤5:检测六个边界面是否有被包含的情况, 如果有,做出相应的包含面. 步骤6:所有V(P )的面做完之后,确定拓扑关 系. 2)修改邻近受影响的Voronoi晶胞子程序流 程. 步骤1:从第一个邻近受影响晶胞 ( ,)开 始,从外部文件定位读取受影响晶胞数据到内存. 步骤2:修改v(P ,)数据,以P 与P ,的垂直 平分面为v(Pk ̄)第一面. 步骤3:循环修改与 (P ,)第一面相交的原 V(Pg)各面为新V(P ,)面. 步骤4:追加在 (P )第一面上方的原 ( ,) 各面为新 ( r)面. 步骤5:新 (Pv)做完之后,确定拓扑关系,文 件重新定位到原V(Pg)位置,用内存中已修改数据 覆盖原V(Pe)数据. 步骤6:读取下一个邻近受影响晶胞数据进行 修改,直到所有受影响晶胞数据修改完毕. 2.4在指定空间区域内生成Voronoi图 以立方体空间区域为例,将立方体空间的六个 边界面分别标识为edge_face1,edge—face2,…,edge —face6(如图3a所示). 1)多面体一面或几面在边界面上的处理. 在逐面构造Voronoi晶胞的过程中,如果内部 面与某边界面相交,就肯定有晶胞的一个面落在此 边界面上.如图3a中构造V(P。)时,已构造内部面 维普资讯 http://www.cqvip.com ・102・ 兰州理工大学学报 第33卷 f 与边界面edge_face4相交于线段S ,这时将s 的 两端点坐标暂时存放在对应于此边界面的备用结构 如图3b中,先以备用结构体数组res—case4[O ̄ 中的线段S 为.厂3的第一边,然后判断S 的终点是 否落在边界面的某边界线上,可见Lz落在边界线z =体数组res_case4[0].砌1一z,res_case4[O ̄.砌1一Y,res —case4[0].砌1一 ,res—case4[0].砌2一z,res—case4 [0].砌2一Y,res—case4[-O ̄.7;U2一 中,继续做内部面, 另一内部面.厂2与边界面edge_face4相交于线段Sz, 同样将s 的两端点坐标存放在res—case4[1].砌 一 1 000, 一1 000上,从res—case4[-i ̄中检索是否还 有其他存储线段的起点也落在这条边界线上,如果 没有,找到此边界线的终点L。,以Lz 为.厂3的第二 条边,再以L 为起点,在边界线z:1 000,y=O上, case4[1].砌1一Y,res—case4[1].Wl— ,res— case4[1 ̄.W2 X,res_case4[-O ̄.W2一Y,res_case4[-O ̄. z,res—从res_case4[i ̄中检索是否还有其他存储线段的起 点也落在这条边界线上,找到Sz的起点L 满足条 件,以L。 为l厂3的第三条边,sz为 的第四条边, 砌z— 中,所有内部面做完后,检测各边界面备用结 构体中是否存储有边界线段,有则自动转到对此边 界面的处理中,在edge—face4边界面对应的备用结 构体数组res—case4中存放两条边界线段S 、S2.下 面将在edge_face4边界面中构造V(P。)的l厂3面. 图3逐面构造Voronoi晶胞过程中与边界面相交晶胞 的处理 3 Handling a cells intersecting with boundaries in the process of constructing a Voronoi polyhedron one plane by another .厂3面构造完成.在构造类似面的过程中如果有存储 线段的终点落在边界面的某边界线上,情况就会复 杂,否则,只要以线段的终点坐标在备用结构体数组 中检索其他以此点为起点的线段,依次连接这些线 段就能做出此Voronoi晶胞落在边界面上的面了. 图3a中,V(P。)的面,4在edge—face2上,对应 于它的备用结构体数组为res—case2;面.厂5在edge_ face3上,对应于它的备用结构体数组为res—case3; 面,6在edge_face6上,对应于它的备用结构体数组 为res_case6,它们的构造方法与构造.厂3面完全相 同. 2)构造初期,晶胞包含边界面的处理. 在以上处理多面体一面或几面落在边界面上的 问题时,前提是内部面必须与边界面至少有一条相 交线段,而由于空间点是随机生成的,还有可能出现 如图4中 (Pa)包含edge—face6的情况,由于在 edge_face6对应的备用结构体数组res—case6中没 有储存边界线段,用以上方法处理时会认为edge一 图4逐面构造Voronoi晶胞过程中晶胞包含边界面的 示意图 Fig.4 Schematic diagram cells intersecting boundaries in the process of constructing a Voronoi polyhedron plnae by plane 维普资讯 http://www.cqvip.com

第5期 李俊琛等:空间点集Voronoi图的海量构造算法及可视化技术 face6上没有V(P。)的品胞面.所以在边界面的问题 上进行如下技术处理. 以图4中构造V(P。)为例,在edge—face2上做 .邻的其他面 时,由于两面共用一条边,相邻面. 上这一边的数据不用重新计算,直接用 的同一边 数据即可,以此类推.这样构造的单个Voronoi晶胞 面与面之间也是完全封闭的. 厂3面时,此边界面完整地包含了edge_face2的一条 边界线 ,所以与 相邻的edge_face6有可能成为包 含面,对开关变量embody—face6置1,在做厂4面、 厂5面、厂6面时同样也对embody—face6置1,在做完 内部面后对各包含面开关变量embody—face1,em— bodyface2,…,embody_—在修改邻近受影响Voronoi晶胞V(Pkz)时,利 用已做出的P{与P ,的垂直平分面数据进行修改, 保证了晶胞与晶胞之间不会出现“裂缝”.这样,在整 个构造空间点集Voronoi图的过程中避免了所有可 能产生的数据误差,得到了正确的空间点集 face6进行检测,如果有开 关变量被置1,进而判断与之对应的边界面上是否 Voronoi图. 已做出Voronoi晶胞的一面,已做出则此边界面未 被包含,检测其他边界面,未做出则证明开关变量对 3实验结果与空间点集Voronoi图的 应的边界面为包含面,此边界面是Voronoi晶胞的 内部构造 一面,在构造V(P3)时,检测到embody—face6—1, 图5是由本文发展算法所构造的空间点集 并且判断后发现edge_face6上未做出Voronoi晶胞 Voronoi图用OriginPro软件实现可视化的效果图. 面,所以edge—face6为V(P。)的一个包含面.本文 图5a是三维Voronoi晶胞集合体实体示意图,图 的算法已经完整地考虑了可能出现包含面的各种情 5b是三维Voronoi晶胞集合体表面示意图. 况,包括一个晶胞有三个包含面的极端情况. 构造空间点集Voronoi图后,并不能明确清晰 2.5计算误差引起的“裂缝”的处理 地看到其内部结构,这给应用空间点集Voronoi图 在构造V(P )各面的过程中,同样使用二维情 解决实际问题时增加了困难,为了解决这个问题, 况下采用的逐点继承的方法,以保证各面的完全封 程序中设计了对空间点集Voronoi图进行任意可视 闭.各面之间采用类似逐点继承法的逐线继承法,即 化平面剖分的模块. 构造出V(P )的任意一个面 后,在构造与此面相 (d) (e) (f) 图5三维Voronoi晶胞集合体及其内部构造演示 Hg.5 Demonstration of 3D Voronoi cells and interior structure of each aggregate 维普资讯 http://www.cqvip.com

兰州理工大学学报 第33卷 在空间点集Voronoi图构造完成后,程序提示是否 要做任意平面剖分,选择“是”启动剖分模块.以下为 4结论 本项研究工作运用简单合理的空间数据结构, 设计了基于计算机硬盘文件为运算及存储对象的空 间点集Voronoi图的增量算法,在指定空间区域内 实现了海量三维Voronoi晶胞集合体的构造,同时 设计了对空间点集Voronoi图的任意平面剖分方 法,达到了演示三维Voronoi晶胞集合体内部构造 剖面构造的具体步骤: 步骤1:建立剖面储存文件,提示输人任意剖面 方程的4个参数,即ax+by+CZ+d=0中的4个系 数a c、d,判断剖面是否切到Voronoi图,未切到 则提示重新输人剖面参数. 步骤2:剖面与构成Voronoi图区域的12条边 做交点以确定从哪条边切人,然后判断切点切到哪 个Voronoi晶胞,记录此Voronoi晶胞. 步骤3:在记录晶胞内做出单个晶胞剖面,因为 单个晶胞剖面的各边在相邻两个Voronoi晶胞的公 共面上,找到相邻Voronoi晶胞并在这个晶胞内做 出下一个单个晶胞剖面,以次类推做出完整的剖面, 并将数据存人文件. 步骤4:剖面完成后,看它是否影响到可视边界 面,如果有影响,对可视边界面做相应修改. 运用任意平面剖分的方法可以从任意角度、任 意深度显示空间点集Voronoi图的内部构造,图 5c、d、e、f是几种剖分的效果图. 表1列出了本文增量式外存算法的执行时间和 硬盘占用量,生成子是随机产生的,实验环境为 pentium(R)4 3.2GH/32M/16OGB,WindowsXP/ Visual C++6.0. 表1算法的耗时测试结果 Tab.1 Time consumption test for the algorithm 的目的,发展的算法与程序的实用性很强. 参考文献: Eli AURENHAMMER Voronoi diagrams-a survey of a funda- mental geometric data structure[J].ACM Computing Sur— veys,1991,23(3):345-405. [2]AMENTA N,BERN眦Surface reconstruction from Voronoi filtering[J].Discrete and oCmputational Geometry,1999,22: 481-504. [3]TuCERYAN M,JAIN A K.Texture segmentation using Voronoi diagrams[J].IEEE Trnasa ̄ions on Pattern Analysis and Machine Intelligence,1990,12(2);211-216. [4]PONAMGI M K.Incremental algorithms for ocllision detection between solid models[J].IEEE Trnasactions on Visualization and Computer Graphics,1997,3(1):51-64. [5]swANsON K.An optimal algorithm ofr roundness determina— tion on convex polygons口].Computational Geometry:Theory &Applications,1995,5:225—235. 1163普雷帕拉塔F P,沙莫斯M L计算几何导论[M].庄心谷译. 北京:科学出版社,1990:226—277. [7]周培德.计算几何_算法分析与设计[M].北京:清华大学出版 社,2000:88—132. [8] CLARKSON K L,MEHLHORN K,SEIDEL R Four results on randomized incremental constructions[J].Computational Geometry,1993,3(4):185—212. [9] KLEIN R,MEHLHORN K,MEISER S.Randomized incre— mental ocnsturction of abstract Voronoi diagrams[J].Compu- tational Geometry,1993,3(3):157-184. [1O] 李俊琛,李旭东,任淮辉.海量平面点集Voronoi图的构造算 法[J].兰州理工大学学报,2007,33(4):102—105. 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务