顾及拓扑的三维地理空间实体群的线消隐方法

文档序号:6631796阅读:369来源:国知局
顾及拓扑的三维地理空间实体群的线消隐方法
【专利摘要】一种顾及拓扑的三维地理空间实体群的线消隐方法,所述三维地理空间实体群的三维空间数据模型包括节点、边、环、平面片和体这5类基元,预设的规则包括给予消隐的每个实体必须是剖分完全的,设定了只共面、只共边、只共点、共面面、共边面、共边边、共点面、共点边、共点点的情况;进行消隐过程,包括顾及拓扑关系的消隐预处理,扩展的第一类线消隐处理处理自遮挡的情况,扩展的第二类线消隐处理处理互遮挡的情况。与现有三维实体集合线消隐的相关技术相比,本发明能够实现三维实体集群的线消隐处理,对实体的各种情况都能准确进行处理。
【专利说明】顾及拓扑的三维地理空间实体群的线消隐方法

【技术领域】
[0001] 本发明涉及三维地理空间数据组织与可视化的【技术领域】,尤其是涉及一种顾及拓 扑的三维地理空间数据的线消隐方法。

【背景技术】
[0002] 用计算机生成三维形体的真实感图形,是计算机图形学研究重点之一。真实感图 形在仿真模拟、几何造型、科学计算可视化等多个领域具有广泛应用,其生成过程涉及消 隐。消隐,就是运用某种技术手段判别物体的隐藏部分(不可见的线或面)并将其从画面 中消除或用虚线绘制的过程,也称可见性测试。消隐后的图形,称为ShadedPicture或者 Half-tonePicture,与物体的可见性判定(VisibilityDetermination)在原则上等价。采 用消隐后的二维线框图形来表达真实的三维图形,输入数据为三维实体群,输出数据为二 维线框。因为输出数据是线框,面在输出结果中是不表达的,所以核心是线状实体在最终输 出结果中的可见或不可见表达。消隐的过程,其实是不断趋近最真实的面与线可见性判定 的过程。
[0003] 之所以消隐在真实感图形生成过程中非常重要,是因为:(1)三维信息在经过二 维投影变换后失去了深度信息,往往导致图形表达的二义性,需要在绘制二维图形同时通 过隐藏物体的不可见部分来辅助展现三维立体形态;(2)消隐是生成真实感图形的重要组 成部分,它为后续的光照模型设置、表面渲染(包括纹理映射)提供了基础。
[0004] 消隐方法至今研究众多。面对迄今为止众多的消隐算法研究,分类方法也有所不 同,可归纳如下:⑴根据消隐方法分类,包括物空间消隐和像空间消隐;⑵根据消隐对象 分类,包括线消隐和面消隐;(3)根据实现途径分类,包括计算机软件实现和硬件实现。现 有多采用第一种和第二种分类方法,特别是第一种分类方法。具体的,物空间消隐以三维场 景中对象为处理单元,在所有对象之间进行比较,除去不可见部分。物空间消隐多用于线消 隐,也用于面消隐。像空间消隐以构成图形的每一个像素为处理单元,针对场景中所有在该 像素上有投影的表面,确定其中相对于观察点的可见表面,用该表面颜色填充该像素。像空 间消隐多用于面消隐。
[0005] 自从Robert于1963年提出处理隐藏线、Weiler等于1977年提出处理隐藏面的算 法以来,消隐算法层出不穷。针对现有大量的针对消隐处理的文献研究,往往采用像空间、 物空间、像空间和物空间结合这三个分类。
[0006] 针对基于像空间的诸多消隐算法,其中Z缓冲器算法最为有名,它也是最为目前 常用的作用于像空间的隐藏面消除算法,它在工业界被广泛采用,可通过硬件实现。例如, OpenGL作为工业界事实上的标准,其采用的就是Z缓冲器算法。针对基于像空间的消隐算 法,以像素为基本研究单位,与完全基于物空间的消隐算法相比其涉及计算几何内容较少, 其本质上属于图形图像学领域。故而,完全基于像空间的消隐算法、结合像空间和物空间的 消隐算法不是本发明的研究重点,基于物空间的消隐算法才是本发明的借鉴对象。
[0007] 此外,针对完全基于像空间、结合像空间和物空间的消隐方法,它们的算法复杂度 与环境复杂度无关(如与三维实体包含了多少面片、多少线段无关),只与输出设备的像 素分辨率有关,故而无法在图像缩放时依然保持足够清晰度,可视化效果不理想;相对的, 针对完全基于物空间的消隐方法(包括Apprel方法、Loutrel方法、Galimberti方法、 Mononari方法等)的空间复杂度,都与环境复杂度的平方呈现正相关,在图像缩放时依然 保持足够清晰度,可视化效果理想。这也是本发明的重点参考对象是基于物空间的消隐方 法的原因。
[0008] 按照不同消隐客体分类,还包括针对机械零件、针对曲面、针对地形、针对地质栅 栏等消隐。还有许多研究关注如何设计应用于消隐的数据模型或数据结构,基于现有不同 数据结构能够实现一定程度的物空间消隐,但各自存在局限性,因为受本身数据结构的局 限较大(之后详述)。
[0009] 由上可见,有的研究注重消隐方法的输入数据类型(如针对机械零件、针对曲面、 针对地形、针对地质栅栏),有的研究注重输出结果的表达形式(如P缓冲器算法中输出结 果的不同类型表达),有的研究注重应用于消隐的数据结构设计(如半边结构、B-rep结构、 B-rep与CSG结合、有限元组织形式),更多的研究关注消隐方法的设计原理(如各类物空 间算法、像空间算法、物空间与像空间结合算法)。
[0010] 综上所述,每一个消隐方法事实上都可以从它们共同拥有的五个方面着手给予归 纳,即每一个消隐方法可以看成是一个五元组集合,即:HA= (1,0,0汁,幻。其中:撤是一个 消隐方法,I(Input)为要进行消隐处理的三维对象的集合,简称输入;O(Output)为经过消 隐处理的二维对象的集合,简称输出;D(DataStructure)为进行消隐处理时采用的数据结 构,简称数据结构;P(Pr〇Cedure)为进行消隐所需基本操作过程的集合,主要包括:分类、 排序、三维坐标变换、透视投影变换,基本图形元素的求交计算,两个区域重叠判断,点与区 域的包含测试,面的朝向测试,简称过程;S(Strategy)为消隐策略,即规定P(Procedure) 中各操作过程被采用的先后次序,简称策略。
[0011] 消隐方法之所以不同,主要在于因素I,D,P,S,其次在于因素0。针对I,只有保证 输入数据是正确的,才有可能通过正确的消隐过程得出正确的消隐结果。针对D,即消隐处 理时采用的数据结构,针对同一消隐方法往往可以采用不同的数据结构进行算法实现,算 法效率有所差异,如BSP树算法就是利用了二叉树来分割和显示场景从而加速消隐速度; 再如针对采用边界表达模型组织的实体,可以用半边结构(Half-edge)组织,还可以用翼 边结构(Winged-edge)组织,采用何种结构对算法效率有影响。因素I与因素D密切相关。 针对P(即分类、排序、包含性测试、可见性测试)和S(即P中各基本操作过程被采用的先 后次序),它们也紧密相关,共同描述了消隐算法的基本原理,从根本上影响算法正确性。针 对〇,其对输出结果的可视化效果产生影响,但不影响算法正确性。故而,认为因素I,D,P,S 是决定因素,因素〇是辅助因素,且I与D关系紧密,P与S关系紧密。可进一步如下归纳:
[0012] 正确的输入I(合适的数据结构D)+正确的处理过程P与S=正确的输出0
[0013] 尽管如此,现有的文献与研究极少深入分析消隐方法的I(Input),特别是针对众 多的物空间消隐方法,没有深入分析输入数据中各类基元的特征,尤其包括用于消隐的线 是怎么样的线、面是怎么样的面、体是怎么样的体,同时没有系统归纳这些基元之间的拓扑 关系,尤其是体与体之间拓扑关系的分类。哪些算法有能力实现单个凸多面体的消隐、哪些 算法能实现单个凹多面体的消隐、哪些算法能够实现带洞的多面体的消隐、哪些算法能够 实现多个凸多面体的消隐(包括凸体与凸体之间可能分离、可能相邻等)、哪些算法能够实 现多个凹多面体的消隐(凹体与凹体之间可能分离、可能相邻等)、哪些算法能够实现凹多 面体与凸多面体混合时的消隐处理(凸体与凹体可能分离、可能相邻等),这些在现有研究 与文献中都没有给予系统归纳(本发明中稍后归纳);同时,能够实现以上消隐处理的各个 数据模型或结构有何特点、有何约束,消隐算法各自又有何区别,现有文献或研究均没有深 入分析。是否能够给出一种能够既能实现凸多面体消隐、又能实现凹多面体消隐、而且这样 的体是集群的(体与体之间包括分离、相邻于点、相邻于边、相邻于面等)的统一消隐算法, 更是值得深入考虑。这正是本发明的研究重点。
[0014] 本发明为"一种顾及拓扑的三维实体集群的线消隐方法",其着眼点在于"顾及拓 扑关系"。故而,在给予
【发明内容】
的详细阐述前,首先回顾当前三维空间数据模型的研究现 状,之后分析当前拓扑关系的研究现状,然后给予几个当前成熟的标准和三维软件中模型 及其拓扑关系的现状分析。具体包括:
[0015] 一.当前三维空间数据模型的研究现状
[0016] 至今为止,组织三维空间数据的模型研究众多,典型的包括三维形式化 数据模型(3DFDS, 3DFormalDataStructure)、简化空间模型(SSM,Simplified SpatialModel)、城市数据模型(UDM,UrbanDataModel)、面向对象的三维数据模型 (003D,0bject-〇riented3DDataModel)。更为具体的,3DFDS提出最早,但针对点、线、面、 体存在诸多约束;在SSM中,基本组织单元是面,面由弧段构成(而弧段由顶点封闭),面封 闭了体;在UDM中,基本组织单元仍然是面,但面直接由顶点序列表达(省略了弧段),面封 闭了体;在003D中,基本组织单元也是面,但约定面必须是三角面片(即三角形),每个三 角面片由三个顶点构成,三角面片封闭了体。除了以上常见的三维空间数据模型外,还存在 许多其它数据模型:
[0017] (1)国内外学者提出的服务于学术研究的三维空间数据模型
[0018] 典型的包括自定义的、服务于学术研究的三维空间数据模型;
[0019] (2)作为业内或国际标准的三维空间数据模型
[0020] 典型的包括在ISO和GML3中的数据模型;
[0021] (3)应用于商业软件的三维空间数据模型
[0022] 典型的包括在Oracle中使用的三维空间数据模型。
[0023] 无论是以上哪种三维空间数据模型,都强调单个三维实体内部各类基元如何构 造。换言之,即都遵循"〇维基元(如点)_1维基元(如弧段)-2维基元(如面)-3维基元 (如体)"的层次性构造标准,只是不同数据模型中〇维、1维、2维、3维基元有所不同。
[0024] 二.当前空间实体间拓扑关系的研究现状
[0025] 描述空间实体之间拓扑关系的方法众多,包括四交模型(4IM, 4-Intersection Model)、九交模型(9IM, 9-IntersectionModel)、基于维数扩展的九交模型(DE9IM,Dime nsion-Extended9_IntersecitonModel)、基于区域连接理论(如RCC-8)等。其中,前三 种都是基于点集拓扑学原理,应用最为典型和广泛。特别是基于九交模型,针对三维实体 之间拓扑关系给予分类,则面与面之间共有38种拓扑关系,体与体之间共有8种拓扑关 系,面与体之间共有19种拓扑关系。其中,体与体之间的8种拓扑关系是研究重点,即相 离(disjoint)、相遇(meet)、包含(contain)、包含于(inside)、覆盖(covers)、被覆盖 (coveredBy)、相等(equal)、重叠(overlap)。
[0026] 同时,在现实世界中要求三维空间是完全剖分的,最为典型的是三维产权体与三 维产权体之间不能发生交叉或叠置情况,其类似于二维空间中宗地与宗地之间不能发生交 叉或叠置情况,否则会在相交的二维(三维)宗地部分产生权利二义性,进而产生法律上冲 突,这是必须禁止的。故而,以上约束会造成:在这8种拓扑关系中,包含(contain)与包含 于(inside)、覆盖(covers)与被覆盖(coveredBy)、相等(equal)、重叠(overlap)是不被 允许的。于是,只有相离(disjoint)和相遇(meet)是被允许的。同时,相离(disjoint) 关系中两个三维实体之间没有任何交集,拓扑关系的构造与维护对象只是单个三维实体, 相对简单。此时,只剩余相遇(meet)关系,在相遇(meet)关系中两个相邻实体之间存在共 孕的基兀。
[0027] 以上为点集拓扑学理论。进一步的,针对相交基元,如果采用相交基元的维度代替 是否相交,则以上点集拓扑学理论中罗列的拓扑关系还可再次细分。针对三维实体与三维 实体之间的相遇(meet)情况,可分三大类:相遇于点(meetatOD)、相遇于线(meetatlD)、 相遇于面(meetat2D)。从相遇于点、到相遇于线、再到相遇于面,这是一个连通性逐渐增 强的过程。之后为阐述直观,相遇于点也称"点相邻"(或"共享点")、相遇于线也称"线相 邻"(或"边相邻"、"共享边"、"共享线")、相遇于面也称"面相邻"(或共享面)。针对存在 点相邻、或线相邻、或面相邻的三维实体集群,在现实世界中很常见,典型的如三维建筑体 集群或三维宗地集群。如何针对这样的三维实体集群实现消隐处理,正是本发明的研究重 点。
[0028] 三.若干成熟的标准和软件中三维数据模型及其拓扑关系
[0029] (1)在OpenGL中的模型及拓扑
[0030] 在图形可视化标准OpenGL中,存在两种模式绘制三维实体,一种是OpenGL的实用 工具库(GLUT)直接提供了若干绘制三维实体的API,如glutSolidSphere、glutSolid等; 另一种是采用二维图元的集合来模拟三维实体,典型的包括由三角形集(GL_TRIANGLES)、 三角形带(GL_TRIANGLE_STRIP)、三角形扇(GL_TRIANGLE_FAN)、四边形集(GL_QUADS)所模 拟的三维实体,虽然如此模拟的结果贴上纹理等信息后可以非常逼真地模拟三维实体,但 从拓扑上不能够保证所模拟的三维实体的有效性。
[0031] (2)在ESRIArcScene3D中的模型及拓扑
[0032] 米用MultiPatch要素类型来组织三维模型。MultiPatch在ESRIArcScene 中如下定义:描述三维表面的元素集合,最常见的包括;三角扇(TriangleFan)、三角带 (TriangleStrip)、环组(Rings)。可见,采用MultiPatch通过表面建模方式来模拟三维实 体与OpenGL中情况类似,同样没有三维实体的概念,没有实体间拓扑关系的明确定义,不 能保证所模拟的三维实体的有效性。同时,值得指出的是,ESRIArcScene3D的可视化机制 基于OpenGL(详见ArcGISlOHelp)。
[0033] (3)GoogleSketchup中三维数据模型及拓扑
[0034] 在GoogleSketchup中,组织三维数据的模型基元包括点(Point)、边(Edge)、使 用边(EdgeUse)、面片(Face)、组(Group)。值得指出的是,这里的"使用边(EdgeUse)"描 述了"边(Edge)"的使用情况,其类似于三维组合图中的"投射(dart)",其能够组织存在 分离、点相邻、线相邻、面相邻的三维实体集群。然而,在GoogleSketchup中,并没有真 正的三维实体(3DSolid)概念,其用组(Group)来模拟三维实体(3DSolid),换言之,组 (Group)可以是边(Edge)的集合,也可以是面(Face)的集合,故而作为面片(Face)集合的 组(Group)不能够保证其模拟的三维实体一定是有效的三维实体,可能存在悬挂面/边、孤 立面/边等奇异情况。
[0035] 同时,在GoogleSketchup中,针对三维实体的可视化框架提供了透视投影 (PerspectiveProjection)和平行投影(ParallelProjection)两种模式,其中透视投影 还可以选择单点透视(One-PointPerspective)或两点透视(Two-PointPerspective)。在 以上模式中,在GoogleSketchup中可以实现三维实体的消隐处理(Tools/View/Toolbar/ FaceStyle/HiddenLine)。尽管如此,GoogleSketchup的可视化机制同样基于OpenGL。 进一步的,由于OpenGL中实现消隐是基于像空间的;所以GoogleSketchup中无法针对隐 藏线单独设置可视化样式。
[0036] (4)CGAL(计算几何算法库)中的模型及拓扑
[0037] CGAL全称"计算几何算法库(ComputationalGeometryAlgorithmLibrary) "。 在CGAL中,最为有名的是半边(Half-edge)和翼边(Winged-edge)数据结构。
[0038] 针对半边(Half-edge)数据结构(Bronnimann,H. (2001) ?Designing andImplementingaGeneralPurposeHalf-edgeDataStructure.Algorithm Engineering,SpringerBerlinHeidelberg,pp. 51-60),其可以组织三维实体,由于半边 结构的核心是半边,因此其构造层次性为"顶点-半边-面-体"。然而,半边结构只适用 于组织有向二维流形(〇riented2-manifold)类型的实体,包括二维空间中的多边形实体 集合、三维空间中单个三维实体、三维空间中彼此分离(disjoint)或只存在点相邻(meet atOD)的三维实体集群。之所以如此,是由每条半边(Half-edge)只能相接于两个面片的 特征所决定(Armstrong,M.A. (1979).BasicTopology[M],London:McGraw-Hill.),即这 两个相接面片的可见性共同决定了该半边的可见性。换言之,半边结构不能组织三维流形 (3-manifold)〇
[0039] 翼边(Winged-edge)数据结构(Baumgart,B.G. (1975) ?Winged-edgePolyhedron RepresentationforComputerVision.NationalComputerConference, 7p)同样會泛够组 织二维流形(2-manifold)类型的实体,但不能组织三维流形(3-manifold)类型的实体,情 况与半边相似。
[0040] 相对的,作为半边(Half-edge)结构向高维空间的拓展,三维组合图(3D CombinatorialMap)结构可以组织三维流形(3D-manifold)。三维流形是指独立的 d-cells通过(d-1)-cells以粘贴方式构成的对象,该结构中的核心空间单元称为"投射 (dart) ",类似于"半边(Half-edge)"(CGALv4. 0,http:www.cgal.org;Brisson, (1990). Representationofd-DimensionalGeometricObjects.Ph.DThesis) 〇 针对三维空间中 的相遇(meet)情况,三维组合图可以组织存在点相邻(meetatOD)、线相邻(meetatlD)、 面相邻(meetat2D)关系的三维实体集群。尽管如此,根据笔者目前文献搜索,至今尚未有 文献明确指出通过三维组合图组织的三维实体如何实现消隐,典型的包括相接于多个面片 的投射(dart)如何根据其多个(>2)相接面片的可见性决定该投射(dart)的可见性。
[0041] (5)IS019l〇7'SpatialSchema',GML3,CityGML中的模型及拓扑
[0042] 值得注意的是,针对点相邻、线相邻、面相邻,它们在不同文献与标准中有着不同 表达,如在IS019107'SpatialSchema'、GML3、CityGML中的表达。其中,IS019107'Spatial Schema'中是一个抽象规范,其拓扑关系也只是抽象定义;而OGC中的GML3是作为抽象的 IS019107'SpatialSchema'的具体实现;而CityGML的空间特征由GML3的几何模型对象 表达,可见CityGML同样基于IS019107'SpatialSchema',事实上,CityGML只用了GML3 几何模型的一部分。在GML3和CityGML中,组合实体可细分为聚合(Aggregate)、复形 (Complex)、复合(Composite)三类,三者之间并不互斥,而是继承关系。更为具体的,
[0043] (i)聚合(Aggregate)
[0044] 针对聚合(Aggregate),组件之间的空间关系不受约束,它们可以是分离、叠置、接 触或连接。特别的,在三维空间中称为MultiSolid。由于MultiSolid中体与体可以叠置, 故而不是研究重点;
[0045] (ii)复形(Complex)
[0046] 与聚合相比,复形(Complex)在拓扑上受到约束,它的部件不能叠置,但可以分离 或者沿着共同边界接触。特别的,在三维空间中,体与体之间不能叠置,但可以分离、可以共 享面/线/点。换言之,包含了分离、点相邻、线相邻、面相邻这四种情况。
[0047] (iii)复合(Composite)
[0048] 复合(Composite)是一种特殊的复形。它包含的元素必须是同一维度的。其组 件的内部可以分离,但必须沿着共同边界拓扑连接。特别的,在三维空间中称为复合实体 (CompositeSolid)。在复合实体(CompositeSolid)中,体与体之间必须沿着公共面/边/ 点拓扑连接。换言之,包含了点相邻、线相邻、面相邻这三种情况。
[0049] (6)在OracleSpatial中的模型及拓扑
[0050] 在商业软件Oracle中,OracleSpatial模块用于组织二维与三维空间数据。其 中,在组织三维实体数据时,实体间拓扑关系同样极大地参考了GML/IS0规范,但具体分 类上有所区别:在Oracle中,三维实体可分为复合实体(CompositeSolid)与实体集合 (Collection)两类。
[0051] 其中,复合实体(CompositeSolids)是简单实体(SimpleSolid)的组合,也称组 合实体(CombinedSolid)。复合实体(CompositeSolids)通过简单实体彼此共享拓扑基 元聚合而成,这里的共享拓扑基元只能是2维的面,因为:在定义上,复合实体(Composite Solids)通过去除共享拓扑基元必须能够转换为简单实体(SimpleSolid),也即复合实体 是连通的。换言之,只包含了面相邻该单一情况。构造复合实体的简单实体可以是凸多面 体,也可以是凹多面体。
[0052] 而针对实体集合(Collection),可分为同质实体集合(HomogeneousCollection) 与异质实体集合(HeterogeneousCollection)。同质实体集合(HomogeneousCollection) 由相同类型的实体聚集而成,包括多点、多线、多面、多实体,同质实体集合的构造元素类型 从名称上便可辨别。异质实体集合(HeterogeneousCollection)是由不同类型的实体混 合而成。如上所述,针对在三维空间中的同质实体集合,称为多实体。多实体与以上提及的 复合实体(CompositeSolids)有所区别,因此多实体增加了分离性的判别,也即多实体不 仅禁止体与体之间相交,而且禁止用于封闭体的面与面之间相交。故而,在多实体中,实体 与实体之间的共享基元只允许是1维线或〇维点。换言之,只包含了分离、点相邻、线相邻 这三种情况。
[0053] 由上可见,针对三维实体之间拓扑关系,无论是采用聚合、复形、复合的分类体系, 还是采用复合实体、实体集合的分类体系,本质上都归结于如何处理相离(disjoint)、点相 邻(meetatOD)、线相邻(meetatlD)、面相邻(meetat2D)这四种最基本拓扑类型。
[0054] 以上分析了三维实体如何组织以及实体间拓扑关系如何分类,以下重点针对"现 有的事实上涉及到各类拓扑关系的实体消隐研究"给予深入分析与归类。具体包括:
[0055] (1)涉及单个凸多面体的消隐研究
[0056] 如上所述,Roberts算法于1963年提出,它是已知最早提出的消隐算法,它是一种 线消隐算法,但其处理对象只局限于凸多面体对象、
[0057] (2)涉及单个凹多面体的消隐研究
[0058] 涉及单个凹多面体消隐处理的研究包括(Rappaport,D. (1986) ?ALinear AlgorithmforEliminatingHidden-linesfromaPolygonalCylinder. TheVisualComputer,no. 2,pp. 44-53 ;Stroud,I.A. ,Nagy,H. (2011).TheCAD InterfaceandGraphicalOutput[M].SolidModellingandCADSystems,Springer London,pp.339-365. ;Kettner,L. ,ffelzl,E. (1997).ContourEdgeAnalysisfor PolyhedronProjections[M].SpringerBerlinHeidelberg;张佩翔?(1989)?凹多面体表 面的图示规律及在消隐处理中的应用.吉林化工学院学报,6(3) :60-67;卓守鹏.(1982). 利用棱线的图示规律处理凹多面体的隐藏线[J].浙江工业大学学报,(3) :9-24;洪炳镕, 张栋,范义文.(1980).多面体有效隐藏相关面的自动判定算法[J].哈尔滨工业大学学 报,(6) :40-45;张栋.(1988).关于计算隐线消除算法的研究.硕士学位论文,哈尔滨工 业大学;洪炳镕,张栋.(1989).基于相关遮蔽面的多面体隐线消除的快速算法[J].哈尔 滨工业大学学报,(6):25-31,42;洪炳镕,张栋.(1989). -种基于相关遮蔽面的多面体隐 线消除算法[J].计算机学报,(9) :717-720.)。值得指出的是,所谓被别的多面体遮蔽,实 际上即被别的多面体的前向面遮蔽。
[0059] (3)涉及多个凸多面体的消隐研究
[0060] 当前消隐研究中,有的消隐对象涉及多个凸多面体。这些凸多面体之间事 实上存在多种拓扑关系,其中以分离关系居多,典型的包括(deBerg,M.,Gray,C. (2007).ComputingtheVisibilityMapofFatObjects.SpringerBerlin Heidelberg,pp. 251-262;毛峡,沈巍,赵兴圆.(2009).基于点线关系的透视图消隐算法 [J].北京航空航天大学学报,35(8) :925-928, 937 ;高升宇.(2002).三维空间多面体消隐 问题中可见子段的求解与归并[J].渭南师范学院学报,17(5) :64-66)。
[0061] 针对三维柱状图的消隐算法众多,事实上每个柱状实体都是凸多面体,而这些柱 状实体之间基本呈现分离、面相邻、边相邻这三类关系。
[0062] 其它研究还包括三维实体相互贯穿情况(即相交情况)下的消隐方法(曾接 贤,高满屯,李建军.(1998). -种复杂形体消隐的新方法[J].南昌航空工业学院学 报,1:22-27)。事实上,这种贯穿(相交)情况是不被允许的。
[0063] (4)涉及多个凹多面体的消隐研究
[0064] 还有的消隐对象涉及多个凹多面体。事实上,这些凹多面体之间存在多种拓扑关 系,其中以分离、面相邻这两类居多。
[0065] 特别的,朱仁芝等阐述了针对带洞的三维实体如何消隐处理,但研究对象只是个 别凹体对象,并不是针对大量实体集群对象,并不具备普遍适用性(朱仁芝,太美花,邓 益民.(1996).凹体轮廓线算法及实现[J].计算机科学,23(2) :58-60;朱仁芝,江涌, 陶涛,刘磊.(1998).利用3维重建技术进行线框模型消隐的算法[J].计算机工程与应 用,5:19-20;朱仁芝,太美花,邓益民.(1992).三维形体消隐和相贯线的一种新算法[J]. 中国科学技术大学学报,22 (3) : 295-302 ;朱仁芝,刘磊,江涌,陶涛,卢继军.(1999).由 表面模型表达的三维形体的一种消隐算法[J].计算机工程与设计,20(1) :56-60.)
[0066] (5)涉及凸多面体和凹多面体混合集合的消隐处理
[0067] 涉及凸多面体和凹多面体混合集合的消隐处理,具体包括(袁超.(2006).多个凹 凸形多面体的深度消隐算法研究[J].四川理工学院学报(自然科学版),19(4) : 104-107 ; 袁超.(2006).多个凹凸形多面体的深度优先消隐算法研究[J].计算机工程与应 用,28 (9) : 97-99, 102.)。这些凹体与凸体之间可能存在多种拓扑关系,往往包括分离、边相 邻、面相邻等关系。
[0068] 可见,现有三维实体集合的众多消隐方法,对集合中每个三维实体的形态有所局 限(即大多研究都要求三维实体是不带穿洞的体,只有少量研究允许体有穿洞),同时集合 中体与体之间的拓扑基元如何实现消隐的研究并不系统与全面,往往只允许体与体之间分 离、点相邻、线相邻、面相邻中的一种或几种,并没有给予以上关系并存时三维实体集群如 何实现消隐的完善方案。


【发明内容】

[0069] 为克服现有技术缺陷,本发明提供一种顾及拓扑的三维实体群的线消隐方法,该 线消隐方法的着眼点在于"顾及拓扑"。
[0070] 本发明的技术方案提供一种顾及拓扑的三维地理空间实体群的线消隐方法,所述 三维地理空间实体群的三维空间数据模型包括节点、边、环、平面片和体这5类基元,其中, 点是〇维基元,边与环是1维基元,平面片是2维基元,体是3维基元;
[0071] 预设的规则如下,
[0072] 规则1,待消隐的每个实体必须是剖分完全的;
[0073] 规则2,当某体与另一个体存在的公共元素为2维时,称只共面;
[0074] 规则3,当某体与另一个体存在的公共元素为1维时,称只共边;
[0075] 规则4,当某体与另一个体存在的公共元素为0维时,称只共点;
[0076] 规则5,当某体与另两个体存在的公共元素分别为2维时,称共面面,按照只共面 的情况处理;
[0077] 规则6,当某体与另两个体存在的公共元素分别为1维与2维时,称共边面,按照只 共面的情况处理;
[0078] 规则7,当某体与另多个体存在的公共元素分别为1维时,称共边边,按照只共边 的情况处理;
[0079] 规则8,当某体与另两个体存在的公共元素分别为0维与2维时,称共点面,按照只 共面的情况处理;
[0080] 规则9,当某体与另两个体存在的公共元素分别为0维与1维时,称共点边,按照只 共边的情况处理;
[0081] 规则10,当某体与另多个体存在的公共元素分别为0维时,称共点点,按照只共点 的情况处理;
[0082] 基于以上预设规则,进行消隐过程,包括以下步骤,
[0083] 步骤1,顾及拓扑关系的消隐预处理,包括进行平面片的分类和边的分类,
[0084] 进行平面片的分类如下,
[0085] (i)针对体与体之间存在只共面情况时,设定公共面为不可见面;
[0086] (ii)针对体与体之间存在只共边情况时,本步骤不做处理;
[0087] (iii)针对体与体之间存在只共点情况时,本步骤不做处理;
[0088] 进行边的分类如下,
[0089] (i)针对体与体之间存在只共面情况时,公共面包含的边暂设定为可见面;
[0090] (ii)针对体与体之间存在只共边情况时,暂设定公共边为可见边;
[0091] (iii)针对体与体之间存在只共点情况时,本步骤不做处理;
[0092] 步骤2,扩展的第一类线消隐处理,包括子步骤如下,
[0093] 步骤2. 1,进行后向面剔除,包括找到法向量与视线方向一致的平面片,这些平面 片称后向面,后向面设定为不可见面,不参与后续步骤3;找到法向量与视线方向不一致的 平面片,这些平面片称前向面,前向面设定为可见面;
[0094] 步骤2. 2,进行平面片的分类如下,
[0095] (i)将通过后向面剔除找到的所有不可见面,加上步骤1所得所有不可见面,取和 得到完整的不可见面簇;
[0096] (ii)根据通过后向面剔除找到的可见面得到完整的可见面簇。
[0097] 步骤2. 3,针对仅相接于2个面的边,进行边的可见性判定如下,
[0098] (i)相接于2个不可见面的边,设定为不可见边;
[0099] (ii)相接于1个可见面和1个不可见面的边,暂设定为可见边;
[0100] (iii)相接于2个可见面的边,暂设定为可见边;
[0101] 步骤2. 4,进行边的分类,包括将步骤2. 3得到的所有可见边,加上步骤1得到的所 有可见边,取和得到完整的可见边簇,步骤2. 3得到的所有不可见边为完整的不可见边簇;
[0102] 步骤3,扩展的第二类线消隐处理,包括子步骤如下,
[0103] 步骤3. 1,边的细分,包括以步骤2. 4所得完整可见边簇中的每条边为潜在可见 边,判断潜在可见边是否被可见面遮挡,当被可见面部分遮挡时,对此边根据与平面片的相 交情况进进行裁切,裁切后的最终每条边称为最简边;
[0104] 步骤3. 2,最简边的可见性判定,包括采用最简边的中点的可见性来代表整条最简 边的可见性。
[0105] 而且,步骤3. 2,中判断最简边的中点的可见性如下,
[0106] 最简边的中点为三维空间中的点,沿着视线方向所在的空间直线,三维空间中的 点在平面片所在超平面片中一定有一个投影点;此时,投影点和平面片位于同一个超平面 中,通过判断投影点是否位于二维多边形内,得到最简边的中点的可见性。
[0107] 而且,根据消隐过程所得结果,最终可视化效果中可见线的样式和不可见线的样 式都采用自定义设置。
[0108] 与现有三维实体集合线消隐的相关技术相比,本发明能够实现三维实体集群的线 消隐处理,其中,每个三维实体既可以是凸的、也可以是凹的,每个三维实体既可以带穿洞、 也可以不带穿洞,同时这些三维实体之间的拓扑关系可以是分离的、点相邻、线相邻、面相 邻并存(也即该三维实体集群可以是二维流形或三维流形的形式)。此外,最终可视化效果 中线段的样式(包括可见线的样式、不可见线的样式)都可以自定义设置,对实体的各种情 况都能准确进行处理。本发明提出的线消隐方法,主要可应用于三维产权证设计中的图形 可视化部分。三维产权证是地籍管理领域中针对三维产权体的产权证书,三维产权证的设 计是实现三维地籍的重要环节,而三维地籍的建设是地籍管理领域至关重要。针对三维产 权证,由于要通过二维图面来展示三维宗地的立体形态,故而通过消隐处理增强真实感尤 为关键。本发明隶属于三维地籍建设的相关项目(名称为"土地空间使用权管理关键技术 及规范研究"),涉及本
【发明内容】
的三维产权证设计是该项目的一部分。

【专利附图】

【附图说明】
[0109] 图1为本发明实施例采用的三维空间数据模型中各类基元示意图,其中图1 (a)为 顶点示意图,图1(b)为边示意图,图1(c)为平面片示意图,附图1(d)为体示意图。
[0110] 图2为本发明实施例三维空间直角坐标系的解析原理示意图。
[0111] 图3为本发明实施例规则1示意图,其中图3 (a)为完全剖分前示意图,图3(b)为 完全剖分后不意图。
[0112] 图4为本发明实施例规则2-4示意图,其中图4 (a)为规则2示意图,图4(b)为规 则3示意图,图4(c)为规则4示意图。
[0113] 图5为本发明实施例规则5-10示意图,其中图5 (a)为规则5示意图,图5(b)为规 贝1J6示意图,图5(c)为规则7示意图,图5(d)为规则8示意图,图5(e)为规则9示意图, 图5(f)为规则10示意图。
[0114] 图6为本发明实施例规则2-10的解释示例示意图,其中图6(a)为解释示例的体 信息示意图,图6(b)为解释示例的顶点信息示意图。
[0115] 图7为本发明实施例典型案例的消隐过程示意图,其中图7(a)为输入数据(线框 模式)示意图,图7(b)为完全消隐后的输出数据示意图,图7(c)为第一类隐藏线(采用虚 线表达)示意图,图7(d)为第二类隐藏线(采用虚线表达)示意图。
[0116] 图8为本发明实施例应用于卓越世纪中心的消隐过程示意图,其中图8 (a)为输入 数据(线框模式)示意图,图8(b)为完全消隐后的输出数据示意图,图8(c)为第一类隐藏 线(采用虚线表达)示意图,图8(d)为第二类隐藏线(采用虚线表达)示意图。
[0117] 图9为本发明实施例应用于西部通道的消隐过程示意图,其中图9(a)为输入数 据(线框模式)示意图,图9(b)为完全消隐后的输出数据示意图,图9(c)为放大后局部图 (采用线框模式)示意图,图9(d)为局部图完全消隐后的输出结果示意图,图9(e)为局部 图的第一类隐藏线(采用虚线表达)示意图,图9(f)为局部图的第二类隐藏线(采用虚线 表达)示意图。
[0118] 图10为本发明实施例应用于供电局的消隐过程示意图,其中图10(a)为输入数据 (线框模式)示意图,图10(b)为完全消隐后的输出数据示意图,图10(c)为第一类隐藏线 (采用虚线表达)示意图,图10(d)为第二类隐藏线(采用虚线表达)示意图。
[0119] 图11为本发明实施例应用于华润万象城的消隐过程示意图,其中图11 (a)为输入 数据(线框模式)示意图,图11 (b)为完全消隐后的输出数据示意图,图11 (c)为第一类隐 藏线(采用虚线表达)示意图,图11 (d)为第一类隐藏线(采用点点表达)示意图,图11 (e) 为第二类隐藏线(采用虚线表达)示意图,图11 (f)为第二类隐藏线(采用点线表达)示 意图。
[0120] 图12为本发明实施例应用于会展中心的消隐过程示意图,其中图12(a)为输入数 据(线框模式)示意图,图12(b)为完全消隐后的输出数据示意图,图12(c)为第一类隐藏 线(采用虚线表达)示意图,图12(d)为第一类隐藏线(采用点点表达)示意图,图12(e) 为第二类隐藏线(采用虚线表达)示意图,图12(f)为第二类隐藏线(采用点线表达)示 意图。
[0121] 图13为本发明实施例应用于瀚盛花园B1建筑体的消隐过程示意图,其中图13(a) 为输入数据(线框模式)示意图,图13(b)为完全消隐后的输出数据示意图,图13(c)为第 一类隐藏线(采用虚线表达)示意图,图13(d)为第二类隐藏线(采用虚线表达)示意图。
[0122] 图14为本发明实施例应用于瀚盛花园B3建筑体的消隐过程示意图,其中图14 (a) 为输入数据(线框模式)示意图,图14(b)为完全消隐后的输出数据示意图,图14(c)为第 一类隐藏线(采用虚线表达)示意图,图14(d)为第二类隐藏线(采用虚线表达)示意图。
[0123] 图15为本发明实施例应用于瀚盛花园B4建筑体的消隐过程示意图,其中图15(a) 为输入数据(线框模式)示意图,图15(b)为完全消隐后的输出数据示意图,图15(c)为第 一类隐藏线(采用虚线表达)示意图,图15(d)为第二类隐藏线(采用虚线表达)示意图。

【具体实施方式】
[0124] 本发明提供的方法可基于计算机技术实现自动运行。以下结合附图和实施例详细 说明本发明技术方案。
[0125] 本发明的研究内容属于完全基于物空间的消隐方法。本发明提出的消隐方法,是 在传统线消隐方法的基础上发展而来。但本发明提出的消隐方法又不同于传统线消隐方 法,它既能实现二维流形(2-manifold)类型、又能实现三维流形(3-manifold)类型的三维 实体集群的消隐处理。之所以如此,是因为本发明考虑了:
[0126] (1)单个三维实体形体的特殊性
[0127] 在本发明中,作为消隐处理对象的三维实体可以是凸的,也可以是凹的,还可以是 带"穿洞(through-hole)"的。同时,这里的"穿洞"可以是单个三维实体先天具备的,也可 以是后天由于体与体之间叠置后的缝隙发展而来。针对这些情况,现有文献与研究几乎不 曾考虑。
[0128] (2)三维实体之间拓扑关系的特殊性
[0129] 在本发明中,作为消隐处理对象的三维实体之间可以是相离、点相邻、线相邻、面 相邻。现有的文献与研究或者重点研究单个三维实体的消隐,或者关注处于相离关系的三 维实体集合的消隐,或者涉及存在分离、面相邻的三维实体集合的消隐,但没有针对同时存 在分离、点相邻、线相邻、面相邻关系的三维实体集合如何消隐提出解决方案。
[0130] 本发明是具备重要意义,因为在三维建筑体集群、三维产权体集群、三维楼栋集群 中,针对建筑体与建筑体之间、产权体与产权体之间、房屋与房屋之间,存在着大量的分离、 点相邻、线相邻、面相邻关系,如何实现这些三维实体集群实际案例的消隐处理,对于地籍 管理以及房产可视化都具有重大价值。
[0131] 本发明实现消隐采用的三维空间数据模型参见附图1。该模型包括节点、边、 环、平面片、体这5类基元。其中,点是0维基元,边与环是1维基元,平面片是2维基 元,体是3维基元,该模型同样遵循"0维基元-1维基元-2维基元-3维基元"的层次 性构造原则,即"点-边-环-平面片-体"的构造层次性。该模型中,高维基元使用针 对低维基元的引用。该模型是在"面向地籍的三维空间数据模型"的基础上发展而来, 详见(郭仁忠,应申,李霖.(2012).基于面片集合的三维地籍产权体的拓扑自动构建 [J] ?测绘学报,41 (4) : 620-626 ;Guo,R.Z.,Yu,C.B.,Zhao,Z.G.,Li,L.,Ying,S. (2012) ? LogicalDesignandImplementationoftheDataModelfor3DCadastreinChina. 3rd InternationalWorkshopon3DCadastres:DevelopmentsandPractices, 25_260ctober, Shenzhen,China,pp. 113-136.)。具体如下:
[0132] (1)节点(Point)
[0133] 节点是嵌入在三维空间中的一类0维基元,它记录了X,Y,Z坐标。
[0134] 节点在数据库中一般也称Node。节点在欧拉公式中一般记为Vertex。
[0135] (2)边(Edge)
[0136] 边是嵌入在三维空间中的一类1维基元,它是由起始节点和终止节点封闭的一条 有向直线段。边的物理方向由起始节点指向终止节点。边的起始节点与终止节点不能够是 同一个点。
[0137] 边通常也记为弧段(Arc)或段(Segment)。边同胚于1维流形。
[0138] (3)环(Ring)
[0139] 环是嵌入三维空间中的一类1维基元,它由至少3条边封闭而成,这些边形成一个 集合,称为环的构造边集合。环是1维基元,边是1维基元,且环是边的聚合。环是封闭的, 即构成环的第一条边和最后一条边具有公共节点。
[0140] 尽管以上没有显式约束环的所有构造边必须位于同一个平面上,但直接引用环对 象的只有平面片对象,而平面片上所有点在同一平面上,所以默认环的所有构造边位于同 一个平面上。环通常也记为循环(Loop)或圈(Cycle)。
[0141] (4)平面片(Facet)
[0142] 平面片是嵌入于三维空间中的一类2维基元,它是由唯一外环、零至多个内环共 同封闭而成的区域。平面片的边界是环。平面片的唯一外环上的边和所有内环上的边共同 形成了一个集合,该集成称为平面片的构造边集合。一个平面片至少包含3条边。平面片 是相对简单多边形,可以是凸的,可以是凹的。当一个平面片只由3条边构成时,平面片退 化为三角形。
[0143] 平面片具有法向量。在平面片中任意一个环内,其构造边排序是有序的,即构造边 集合有一定的走向,也即前一条边与后一条边一定有公共节点。如下指定:唯一外环的走向 为逆时针,内环的走向为顺时针。同时,每条边本身有物理方向,即从边的起始节点指向边 的终止节点。但在同一个环内,并不是所有边的方向都一致,也即前一条边的终止节点与后 一条边的起始节点并不一定是同一个点。因此,需要一个统一规则来决定平面片的法向量, 通常采用右手定则(即四指方向为平面片的唯一外环中边的环绕方向,大拇指方向为法向 量方向)。进一步的,当平面片的唯一外环的边集合确定后,该边集合的环绕方向就与每条 边的本身方向作比较,如如一致则该条边标记为"+",否则该边标记为"-"。
[0144] 任一平面片都具有两侧。因为每个平面片都有一个所在超平面。该超平面片将三 维空间分为两个部分,一般把平面片法向量所在一侧称为正面,把异于平面片法向量所在 一侧称为背面。
[0145] (5)体(Body)
[0146] 体是嵌入于三维空间中一类3维基元,它由至少4个平面片封闭而成。体的边界 是平面片,它们形成一个集合,称体的构造平面片集合。针对每个体,由于其内部不存在其 它基兀,所以体也称为最小体。
[0147] 本发明中消隐方法采用的三维空间数据模型中各类基元的详细情况如上所述。 更为具体的,附图1给出了该模型中各类基元的直观图形解释。更为具体的,附图1(a) 描述顶点实体v;附图1(b)描述边实体e,其起点为vl,其终点为v2;附图1(c)描述平 面片中外环走向以及如何标记边的方向,其中,该平面片的唯一外环走向为逆时针(即 1 -2-3-4-5-6-7-8_9),边el包含于该外环,且边el本身方向为3_4,边el方向与唯一外环 走向一致,故而标记为+,边e2的方向与唯一外环走向同样一致而标记为+,边e3的方向与 唯一外环走向不一致而记为-,以此类推。附图1 (d)描述体bodyl和体body2之间的平面 片factl,该平面片的唯一外环走向为逆时针(即p-q-r-s),其法向量朝上,平面片factl 法向量朝向体bodyl的外部,故而此时平面片factl作为前向面,体bodyl作为后向体;平 面片factl法向量朝向体body2的内部,故而此时平面片factl作为后向面,体body2作为 前向体。
[0148] 具体实施时,本领域技术人员可根据元素自行设定相应类图,例如:投影前的 三维节点(Vertex)包含初始X值(_3d_x)、初始Y值(_3d_y)、初始Z值(_3d_z)等成 员;投影后的二维节点(Point)包含平面X值(x)、平面Y值(y)等成员;边(Segment) 包含起始节点(beginVertex)、终止节点(endVertex)、邻接平面片集合(ajoinFace)、 可见性(visibility)等成员;平面片(Face)包含唯一外环(outerRing)、零至多个内 环(innerRings)、所有边集合(listSegment)、所在超平面的平面方程(equation)、可见 性(visibility)等成员;体(Body)包含平面片集合(listFace)、边集合(listSegment) 等成员;拓扑基元容器(TopoElementCollection)包含节点集合(listVertex)、边集合 (listSegment)、平面片集合(listFace)、体集合(listBody)、只共享面情况时所有公共面 个数(specl_Face)、只共享面情况时所有公共面包含的边个数(specl_Segment)、只共享 边情况时所有公共边个数(spec2_Segment)、只共享点情况时所有点公共点个数(spec3_ Vertex)、可见面总个数(vlistFace)、不可见面总个数(ivlistFace)、可见边总个数 (vlistSegment)、不可见边总个数(ivlistSegment)等成员。
[0149] 本发明的着眼点为"顾及拓扑",针对顾及拓扑的三维实体群的线消隐,本发明提 出10条规则。后续的【具体实施方式】遵循该10条规则发展而来。
[0150] 需要注意的是,以下会频繁地用到"共面"、"共边"、"共点",而称呼"共面(边、 点)",是指共享的最高维度的基元是"面(边、点)"。之所以这样做,是因为面是2维基元、 边是1维基元、点是〇维基元,而基于高一维度的基元相邻必然包括基于低一维度的基元相 邻。例如,共"面"时,必然存在共"边(即面包含的边)"以及共"点(面包含的点)",此时 称"既共面又共边还共点",是没有意义的,故而只称"共面";又如,共"边"时,必然存在共 "点(即边包含的点)",此时称"既共边又共点",同样没有意义,故而只称"共点"。简而言 之,如果存在公共2维基元,则称存在"共面";如果存在公共1维基元,则称存在"共边";如 果存在公共0维基元,则称存在"共点"。
[0151] 由以上定义可知,1维基元除了'边'还有'环'。那存在公共1维基元时,是否还 需要称存在"共环"?事实上,针对任意一个平面片,其包含的每个环本质上都是由边构成, 且其唯一外环包含的边与所有内环包含的边在给予消隐时采用相同方法对待,故而以下无 论是唯一外环包含的边还是所有内环包含的边都简称边,而且存在公共1维基元时,只称 存在"共边"而不称"共环"。这样,本发明能够解决体中有"穿洞"的情况。
[0152] 同时解释几个重要名词。其中,"簇(Cluster)"指具备相同特性的同类实体形成 的集合,如可见面簇、不可见面簇、可见边簇、不可见边簇。"潜在可见边"指的是当前可见、 但通过进一步判断不一定可见的边。
[0153] 本发明采用的规则具体如下:
[0154] 规则1 (剖分完全规则):待消隐的每个实体必须是剖分完全的。所谓剖分完全, 是指:若体A的平面片与相邻体B的平面片存在相交,则以上平面片与平面片之间应该剖分 完全,即相交部分应该是唯一的,也即公共平面片只存储一次但可被引用多次;若体A的边 与相邻体B的边存在相交,则以上边与边之间应该也是剖分完全的,即相交部分应该也是 唯一的,即公共边只存储一次但可被引用多次;若体A的顶点与相邻体B的顶点重合,则相 交部分应该也是惟一的,即重合顶点只存储一次但可被引用多次。总而言之,存在相交情况 的则必须给予打断,打断后的相同基元只应该存储一次,更高维的基元只使用对于低维基 元的引用。
[0155] 直观地,如附图3(a)所示,体1的平面片ele2e3e4(用构成边表示,或者用构成点 表不的vlv2v3v4)与体2的平面片e5e6e7e8 (也即v5v6v7v8)相交,体1的el和e2与体2 的e8和e5分别相交,需要完全剖分。当剖分结束后,如图3(b)所示,体1的边el分剖分 为边ell和边el2,体1的边e2被剖分为边e21和边e22,体2的边e5被剖分为边e51和 边e52,体2的边e8被剖分为边e81和边e82 ;同时,体1的平面片ele2e3e4被剖分为2个 小平面片,体2的平面片e5e6e7e8也被剖分为2个小平面片,其中,平面片el2e21e51e81 为体1和体2剖分后的公共平面片,体1中另一个剖分后的平面片是elle81e51e22e3e4, 体2中另一个剖分后的平面片是el2e21e52e6e7e82 ;此外,体1和体3共享一个顶点,剖分 前,该共享顶点在体1中被存储为v2并在体3中被存储为v9,剖分后,它们合并为一个顶点 (记为vlO),体1和体3都只使用对于vlO的引用。
[0156] 值得注意的是,以上采用的三维空间数据模型事实上是一种建立在完全剖分基础 的三维拓扑数据结构,即若平面片与平面片相交则剖分平面片、若线段与线段相交则打断 线段、剖分之后相同实体(公共点、公共边、公共面)只存储一次时但被多次引用。换言之, 以上采用的三维空间数据模型默认满足"规则1 (完全剖分规则)"。如果需要主动实现"规 则1",详见(贺彪.(2011).三维地籍空间数据模型及拓扑构建算法研究[D].博士论文, 武汉大学,159p;贺彪.李霖,郭仁忠,史云飞.(2011).赵志刚.(2012).三维地籍空间 数据拓扑构建、维护及应用研究[D].博士论文,武汉大学,191p;夏俊.(2011).三维地籍 中计算几何相关问题研究[Msc.].硕士论文,53p.)。
[0157] 规则2(只共面):当某体与另一个体存在的公共元素为2维时,称只共面。
[0158] 具体的,针对两个相邻的体,如果存在公共平面片,则称这两个体只共面。存在1 个公共平面片,存在2个公共平面片,直至存在多个公共平面片,都称为只共面。只共面的 情况简记为specl。针对只共面情况(specl),认为公共面不可见,公共面包含的边潜在可 见。
[0159] 直观的,如附图4(a)所示,体1和体2之间存在公共平面片ele2e3e4,则称 体1和体2只共享面ele2e3e4。此时,公共平面片ele2e3e4不可见,其包含的边集(即 el,e2,e3,e4)潜在可见。
[0160] 规则3 (只共边):当某体与另一个体存在的公共元素为1维时,称只共边。
[0161] 具体的,针对两个相邻的体,如果存在公共边,但不存在公共平面片,则称这两个 体只共边。存在1条公共边,存在2条公共边,直至存在多条公共边,都称为只共边。只共 边的情况简记为spec2。针对只共边(speC2)情况,认为公共边潜在可见。
[0162] 直观的,如附图4(b)所示,体1和体2之间存在公共边e,但体1和体2之间不存 在任何公共平面片,则称体1和体2只共享边e。共享边e潜在可见。
[0163] 规则4 (只共点):当某体与另一个体存在的公共元素为0维时,称只共点。
[0164] 具体的,针对两个相邻的体,如果存在公共顶点,但既不存在公共边,也不存在公 共平面片,则称这两个体只共点。存在1个公共顶点,存在2个公共顶点,直至存在多个公 共顶点,都称为只共点。只共点的情况简记为spec3。针对只共点(speC3)情况,其不影响 输出结果(因为输出结果为边的显示/隐藏,而这里指示公共点情况)。
[0165] 直观的,如附图4 (c)所示,体1和体2之间存在公共顶点V,但既不存在公共边,也 不存在公共平面片,则称两个体只共享点V。
[0166] 以上是比较纯粹的或只共面、或只共边、或只共点的情况。事实上,实际情况中体 与体之间往往共面、共边、共点3种情况同时存在,或者其中任意2种情况同时存在。针对 共面、共边、共点可能同时存在的情况,需要进一步简化,具体如下:
[0167] 规则5(共面面):当某体与另两个体存在的公共元素分别为2维时,称共面面。
[0168] 具体的,针对某体,如果存在两个相邻的体,与其中一个相邻体只共面,与其中另 一个相邻体也只共面,并且以上两个公共面存在交集,该交集称为共同边,则以上共同边是 否可见只判断一次(只在判断以上任意一个公共面包含的边集是否可见时才考虑)。换言 之,即按照只共面(specl)的情况处理以上共同边的可见性。
[0169] 直观的,如附图5(a)所示,针对体1,体1与体2共平面片ele2e3e4,同时体1与 体3共平面片ele5e6e7,并且以上两个平面片存在交集,该交集即边el,则边el是否可见 只判断一次--具体的,只在判断公共平面片ele2e3e4包含的边集(即el,e2,e3,e4)是 否可见时才考虑,而在判断公共平面片ele5e6e7包含的边集(即e5,e6,e7)是否可见时不 考虑;或者,只在判断公共平面片ele5e6e7包含的边集(即el,e5,e6,e7)是否可见时才考 虑,在判断公共平面片ele2e3e4包含的边集(即e2,e3,e4)是否可见时不考虑。
[0170] 规则6(共边面):当某体与另两个体存在的公共元素分别为1维与2维时,称共 边面。
[0171] 具体的,针对某体,如果存在两个相邻的体,且与其中一个相邻体只共边,与其中 另一个相邻体只共面,并且以上公共边包含于以上公共面的边集中,则以上公共边是否可 见只判断一次(只在判断以上公共面包含的边集是否可见时才考虑)。换言之,即按照只共 面(specl)的情况处理以上公共边的可见性。
[0172] 直观的,如附图5(b)所示,针对体1,体1与体2共平面片ele2e3e4,同时, 体1与体3共边el,并且以上公共边el存在于公共平面片ele2e3e4包含的边集(即 el,e2,e3,e4)中,则判断公共边el是否可见只判断一次--具体的,只在判断公共平面片 ele2e3e4包含的边集(即el,e2,e3,e4)是否可见时才考虑。
[0173] 规则7(共边边):当某体与另多个体(两个或两个以上)存在的公共元素分别为 1维时,称共边边。
[0174] 具体的,针对某体,如果存在两个相邻的体,且与其中一个相邻体只共边,与其中 另一个相邻体也只共边,同时以上两个相邻体之间也只共边而不共面,则以上两个公共边 集的交集称共同公共边。同样的,当有新的相邻体加入时,即针对某体,如果存在两个上相 邻的体,则所有相邻体也只共边而不共面(共边存在于共同公共边中);那么,以上所有体 的共同公共边是否可见只判断一次,且按照只共边(speC2)的情况处理以上共同公共边的 可见性。
[0175] 直观的,如附图5(c)所示,体1与体2共边el,体1与体3也共边el,体2与体3 也只共边不共面(共边el),则称边el为共同公共边,且共同公共边el的可见性只判断一 次。
[0176] 规则8(共点面):当某体与另两个体存在的公共元素分别为0维与2维时,称共 点面。
[0177] 具体的,针对某体,如果存在两个相邻的体,与其中一个相邻体只共点,且与其中 另一个相邻体只共面,并且以上公共点属于以上公共面的包含点集,则以上公共点只存储 一次,以上公共面包含的点集中只使用对于该公共点的引用。换言之,即归结于只共面 (specl)情况。事实上,这种情况并不影响输出结果(因为输出结果是边的显示/隐藏,而 这里指示公共点情况)。
[0178] 直观的,如附图5(d)所示,针对体1,体1与体3共顶点V,同时,体1与体2共平 面片ele2e3e4,且以上公共顶点v属于以上公共平面片包含的点集,则以上公共顶点只存 储一次,以上公共面ele2e3e4只使用针对v的引用。
[0179] 规则9(共点边):当某体与另两个体存在的公共元素分别为0维与1维时,称共 点边。
[0180] 具体的,针对某体,如果存在两个相邻的体,与其中一个相邻体只共点,且与其中 另一个相邻体只共边,并且以上公共点属于以上公共边包含的点集,则以上公共点只存储 一次,以上公共边包含的点集中只使用对于该公共点的引用。换言之,即归结于只共边 (speC2)情况。事实上,这种情况并不影响输出结果(因为输出结果是边的显示/隐藏,而 这里指示公共点情况)。
[0181] 直观的,如附图5(e)所示,针对体1,体1与体3共顶点V,同时,体1与体2共边 el,且以上公共顶点v属于以上公共边包含的点集,则以上公共顶点只存储一次,以上公共 边el只使用针对v的引用。
[0182] 规则10(共点点):当某体与另多个体(两个或两个以上)存在的公共元素分别 为0维时,称共点点。
[0183] 具体的,针对某体,如果存在两个相邻的体,与其中一个体只共点,与其中另一个 体也只共点,同时以上两个相邻体之间也只共点,则它们共同的公共点称共同公共点。同样 的,当有新的相邻体加入时,即针对某体,如果存在两个以上相邻的体,与所有相邻体也只 共点于共同公共点;那么以上共同公共点只存储一次,以上所有相邻体中只存储对共同公 共点的引用。换言之,即归结于只共点(spec3)情况。事实上,这种情况并不影响输出结果 (因为输出结果是边的显示/隐藏,而这里指示公共点情况)。
[0184] 直观的,如附图5(f)所示,针对体1,体1与体3共顶点V,同时,体1与体2也共 顶点v,且体2与体3之间也只共点V,则v称为共同公共点,体1体2体3都只使用对于v 的引用。
[0185] 针对其余情况,即多个体(两个或两个以上)之间同时存在多个公共面(两个或 两个以上公共面)、多个公共边(两个或两个以上公共边)、多个公共点(两个或两个以上 公共点)的情况,均可分解为规则2-10给予处理。附图6给出了一个分解实例,其中图 6(a)为解释示例的体信息示意图,图6(b)为解释示例的顶点信息示意图。该实例中,8个 体相邻,其中上层包括体1体2体3体4,下层包括体5体6体7体8 ;其中,体1由顶点 A,B,D,E,J,K,M,N构成,体 2 由顶点B,C,E,F,K,L,N,0 构成,体 3 由顶点D,E,G,H,M,N,P,Q 构成,体4由顶点E,F,H,I,N,0,Q,R构成,体5由顶点J,K,M,N,S,T,V,W构成,体6由顶点 K,L,N,0,T,U,W,X构成,体 7 由顶点M,N,P,Q,V,W,Y,Z构成,体 8 由顶点N,0,Q,R,W,X,Z,A2 构成。这8个体存在许多共点、共边、共面情况,而且不是纯粹的只共点(spec3)、只共边 (spec2)。具体情况如下,
[0186] (1)体7与体8之间共面QNWZ,体7与体3之间共面PQNM,体7与体5之间共面 MNWV,这些都是只共面(specl)情况。类似的只共面(specl)情况还有很多,包括体5与体 6之间、体6与体2之间、体6与体8之间等。
[0187] (2)体1与体3之间存在共边情况(即共边EN)。但这不是纯粹的只共边情况,因 为边EN同时也属于体1与体2的公共面EBKN包含的边集(即边BK、边KN、边EN、边BE)。 按照规则6 (共边面)处理,即归结于只共面(specl)情况。类似的需要按照规则6 (共边 面)处理的情况还有很多,包括边丽、边QN、边0N、边KN等。
[0188] (3)同样的,针对边EN,还可以看作体1与体2的公共面(即EBKN)、体1与体3的 公共面(即EDMN)的共同边。按照规则5 (共面面)处理,同样归结于只共面(specl)情况。 类似的,边丽、边QN、边0N等也都可以按照规则5 (共面面)处理。
[0189] (4)体1与体8之间共顶点N。但是这不是纯粹的只共顶点情况,因为顶点N还属 于体1与体2的公共面EBKN包含的点集。按照规则8 (共点面)情况处理,即归结于只共 面(specl)情况。同时,顶点N还可以看作体5与4、体3与体6、体7与体2的公共顶点, 也都按照规则8 (共点面)情况处理。
[0190] (5)如上所述,在该实例中,存在只共面(specl)、共边面(归结于specl)、共面 面(归结于specl)、共点面(归结于specl)这4种情况,不存在只共边(speC2)、只共点 (spec3)、共边边(归结于spec2)、共点边(归结于spec2)、共点点(归结于spec3)这5种 情况。
[0191] 如以上案例的实际例子还有许多,特别发生在三维产权体与三维产权体相邻、三 维建筑体与三维建筑体相邻、三维宗地与三维宗地相邻的情况中。在这样的案例中,最终都 归结于只共面(specl)的方式处理(如下表1,表2,表3),但并不意味着没有共边、共点的 情况发生,只是它们不是纯粹的只共边、只共点情况,采用以上规则2-10给予解决是合适 的。
[0192] 遵从以上提出的若干规则,下面详细阐述实施例中该线消隐方法。
[0193] 实施例所提供针对顾及拓扑的三维实体群的线消隐,总共包含3个大步骤:步骤 1.顾及拓扑关系的消隐预处理,其主要针对公共面、公共面包含的边、公共边的可见性给 予初步判断;步骤2.扩展的第一类线消隐处理,其主要针对传统的第一类消隐情况给予扩 展,也称自遮蔽(或自消隐、局部消隐),它发生在单个三维实体内部;步骤3.扩展的第二 类线消隐处理,其主要针对传统的第二类消隐情况给予扩展,也称互遮挡(或互消隐、全局 消隐),它发生在多个三维实体之间。
[0194] 步骤1,顾及拓扑关系的消隐预处理
[0195] (1.1)平面片的分类
[0196] (i)针对体与体之间存在只共面情况时,设定公共面为不可见面。之所以这么,是 因为:公共面一定被包含该公共面的相邻体所"自遮挡",同时可能被位于视线更前方的其 它体所"互遮挡",不可能出现可见情况,所以这里设定为不可见。公共面的个数记为slF。
[0197] (ii)针对体与体之间存在只共边情况时,相接于该公共边的面的可见性难以直接 判断,本步骤不做处理。
[0198] (iii)针对体与体之间存在只共点情况时,相接于该公共点的面的可见性难以直 接判断,本步骤不做处理。
[0199] (1.2)边的分类
[0200] (i)针对体与体之间存在只共面情况时,公共面包含的边暂设定为可见面(事实 上潜在可见)。之所以这样,是因为:针对公共面包含的边,可能位于视线最前方而可见,也 可能被包含该边的体所"自遮挡",还可能被位于视线更前方的其它体所"互遮挡",所以可 能可见可能不可见,不失去一般性的,这里设定为可见,最终是否可见由计算后决定。该公 共面包含的边潜在可见,所有这样的包含于公共面的潜在可见边的总个数记为slE。
[0201] (ii)针对体与体之间存在只共边情况时,暂设定公共边为可见边(事实上潜在可 见)。之所以这样,是因为:针对公共边,可能位于视线最前方而可见,也可能被包含该边的 体所"自遮挡",还可能被位于视线更前方的其它体所"互遮挡",所以可能可见可能不可见, 不失去一般性的,这里设定为可见,最终是否可见由计算后决定。该公共边潜在可见,所有 这样的潜在可见的公共边的总个数记为s2E。
[0202] (iii)针对体与体之间存在只共点时,相接于该公共点的边的可见性难以直接判 断,本步骤不做处理。
[0203] 以上即对于三维流形(3-manifold)处相关面与边的消隐处理。针对以上公共面、 公共面包含的边、公共边的消隐处理思想,在这里简称"消隐预处理策略"。本步骤不做处理 的情况,在后续步骤可能再进行相关处理。
[0204] (1. 1)平面片的分类和(1. 2)边的分类的执行为并列关系,顺序不限。
[0205] 步骤2,扩展的第一类线消隐处理(即"自遮挡"的处理),包括依次执行以下子步 骤:
[0206] (2.1)后向面剔除
[0207] 进行后向面剔除,包括找到法向量与视线方向一致的平面片,这些平面片称后向 面,后向面设定为不可见面,不参与后续步骤3 ;找到法向量与视线方向不一致的平面片, 这些平面片称前向面,前向面设定为可见面。之所以称"后向面剔除",是因为找到的不可见 的后向面不再参与第二类线消隐处理。
[0208] (2.2)平面片的分类
[0209] (i)将通过"后向面剔除"找到的所有不可见面,加上"消隐预处理"中的所有不可 见面(即公共面),两者和即为完整的不可见面簇;
[0210] (ii)在"消隐预处理"中不存在可见面,通过"后向面剔除"找到的可见面即完整 的可见面簇。
[0211] 其中,只需要完整的可见面簇用于后续操作,即只需要可见面作为判断是否产生 "互遮挡"的主体(客体为潜在可见边)。之所以这样,是因为:不可见面一定被可见面所遮 挡,故而判断边是否被所有面(包括可见面、不可见面)遮挡可以简化,等价简化为判断边 是否被可见面遮挡。
[0212] (2. 3)边的可见性判定
[0213] 边始终包含可见边、不可见边两类。
[0214] 值得注意的是,这里处理的边只相接于2个平面片,即该边上任何上一点的邻域 都符合"二维流形(2-manifold)"的特征。之所以这样,是因为:这里边的可见性由仅相接 的2个平面片的情况决定,具体如下:
[0215] (i)相接于2个"不可见面"的边,设定为不可见边。
[0216] 该边作为两个不可见区域的过渡区域,该区域尽管没有任何面积,但其遵守"连贯 性(Coherence)"中的"面的连贯性(FaceCoherence)"应该不可见。该边最终不可见。
[0217] (ii)相接于1个"可见面"和1个"不可见面"的边,暂设定为可见边(事实上潜 在可见)。
[0218] 该边作为可见区域和不可见区域的过渡区域,该区域无法通过"面的连贯性(Face Coherence) "来判断可见性。该边可能位于视线最前方而可见,可能被包含该边的体所"自 遮挡",也可能被位于视线更前方的其它体所"互遮挡",所以可能可见可能不可见,不失去 一般性的,这里设定为可见,最终是否可见由计算后决定。该边是潜在可见的。
[0219] (iii)相接于2个"可见面"的边,暂设定为可见边(事实上潜在可见)。
[0220] 该边作为两个可见区域的过渡区域,该区域尽管没有任何面积,但其遵守"面的连 贯性(FaceCoherence)"应该可见。该边可能位于视线最前方而可见,可能被位于视线更 前方的其它体所"互遮挡",所以可能可见可能不可见,不失去一般性的,这里设定为可见, 最终是否可见由计算后决定。该边是潜在可见的。
[0221] 针对以上仅相接于2个面的边的可见性判断策略,简称"第一类消隐策略"。
[0222] (2. 4)边的分类
[0223] 边始终包含可见边、不可见边两类。具体的,
[0224] 将以上(2. 3)得到的所有可见边,加上"消隐预处理"得到的所有可见边,两者之 和才是完整的可见边簇;由于"消隐预处理"没有得到不可见边,故而以上(2.3)得到的所 有不可见边即为完整的不可见边簇。其中,只需要完整的可见边簇用于后续操作,即只需要 这些边作为判断是否产生"互遮挡"的客体(主体是可见面)。
[0225] 步骤3,扩展的第二类线消隐处理(即"互遮挡"的处理),包括依次执行以下子步 骤:
[0226] (3. 1)边的细分
[0227] 此处判断每条潜在可见边(即步骤(2. 4)中所得的完整可见边簇中的每条边)是 否被可见面遮挡。一条边是否被一个面遮挡,可能存在三种情况:
[0228] (i) 一条边被该面完全遮挡;
[0229] (ii) -条边被该面完全不遮挡;
[0230] (iii) 一条边被该面部分遮挡:即出现部分遮挡、部分不遮挡的情况。
[0231] 当遇到情况(i)和(ii)时,边不需要进一步细分;只有遇到情况(iii)时,边才 需要进一步细分。当边需要进一步细分时,如何细分由边如何被平面片裁切所决定。从原 则上讲,每一条可见边与每一个平面片都需要判交,而且一条边可能被平面片裁切为若干 段。边被平面片裁切的过程,可以进一步简化为边与平面片包含的边给予求交的过程。裁 切后的最终每条边称"最简边"(这种类型实体在英文文献中常称"Span(跨越)")。之所 以称"最简",是因为这样的边上每一点的可见性一致。此处利用的是"边的连贯性(Edge Coherence),'。
[0232] 边与边的相交操作(也称打断操作)在此不再赘述,因为在诸多文献中涉及。
[0233] (3. 2)最简边的可见性判定
[0234] 最简边上每一个点的可见性都一样。此处,采用最简边的中点的可见性来代表整 条最简边的可见性。由此,针对"在三维空间中判断最简边是否被平面片遮蔽"被简化为"在 三维空间中判断点是否被平面片遮蔽"。针对"在三维空间中判断点是否被平面片遮蔽",是 一个三维空间问题,还可进一步简化为二维空间问题,具体如下:沿着视线方向所在的空间 直线,三维空间中的点在平面片所在超平面片中一定有一个投影点;此时,投影点和平面片 位于同一个超平面中(尽管嵌入于三维空间)。换言之,若将以上嵌入于三维空间中的平 面片通过刚性变换(包括平移、旋转等)变换到X0Y平面,该同样刚性变换后的投影点一定 也位于X0Y平面,因为刚性变换具有拓扑不变性。此时,以上问题简化为"判断变换后的投 影点是否位于变换后的二维多边形内",即点的投影结果是否位于面的投影结果。判断投影 点是否位于二维多边形内之后,若否则最简边的中点可见(也就是最简边可见),是则不可 见。而"在二维空间中判断点是否位于多边形内"算法成熟,包括可以采用"角度和判别法" 或"水平/垂直交叉数判别法"或"面积判别法"等现有技术判断。
[0235] 以上通过"判断最简边是否被平面片遮蔽"从而给定最简边的可见性的过程,简称 "第二类消隐策略"。
[0236] 具体实施时,消隐方法可采用投影来辅助。投影变换指的是将三维的物体投影 到二维的平面上。传统上,投影变换分为平行投影(ParallelProjection)和透视投影 (PerspectiveProjection)。其中,平行投影(ParallelProjection)是投影方向垂直于观 察平面的投影方式,也称正投影;透视投影(PerspectiveProjection)是视线相交于灭点 的投影方式,若相交于一个灭点,则称单点透视投影,也简称透视投影,若相交于两个灭点, 则称两点透视投影。投影变换的本质,是从三维空间点转换为二维投影点。消隐的本质, 是在以上转换过程中将被遮蔽的线要素(或面要素)给予特别标识(如虚线表达)。投影 变换具备唯一性,即一个三维空间点经过投影变换后存在且只存在一个二维投影点;相对 的,投影变换的逆向过程可称为反投影变换,反投影变换不具备唯一性,即一个二维投影点 经过反投影变换处理可能存在多个三维空间点,而比较同一个二维投影位置上多个三维空 间点的深度信息是实现物空间消隐的重要环节,这是实现物空间消隐的重要环节。在本发 明实施例中,采用的投影方式为平行投影,但不是常规的正平行投影,而是采用一种自定义 的斜平行投影。之所以这样做,是因为针对本发明中诸多实际案例采用该投影方式可观察 相对全面(正面、上面、侧面均包括部分),事实上本发明所述消隐方法可通过任意投影方 式辅助。具体的,实施例投影方式由于属于平行投影,所以不需要规定视点位置(Viewing Position);以上投影的视线方向(ViewingDirection)可由(!.-|/+在-i/而表达。相应的, 其坐标变换公式为:
[0237] _2d_x= _3d_y+_3d_xXCos( 31X(45. 0/180. 0)) (1)
[0238] _2d_y= _3d_z+_3d_xXSin(X(45. 0/180. 0)) (2)
[0239] 其中,针对任意一个点,_3d_x,_3d_y,_3d_z分别为变换前该点在三维空间坐标中 的X值、Y值、Z值,而_2d_x,_2d_y分别为变换后该点在二维空间坐标中的横坐标值、纵坐 标值。以上坐标变换过程也可以采用三维坐标系直观解析,如附图2所示,x0,yO,zO分别 是变换前三维点在X,Y,Z轴上的坐标,B点为投影变换后的点。该三维空间直角坐标系遵 守四个基本原则:(1)坐标系原点为(〇,〇,〇); (2)在三维空间中(即变换前),X轴、Y轴、 Z轴相互垂直;(3)在二维空间中(即变换后),X轴与Y轴、X轴与Z轴的夹角均为45度; (4)X:Y:Z为 1:1:1。
[0240] 以上即顾及拓扑的三维实体群线消隐的【具体实施方式】,为便于技术人员理解起 见,提供公式(3)_(25)如下,整个消隐过程满足公式(3)_(25)。值得注意的是,针对以下所 有公式,是对以上文字形式的三大步骤的解释,这种解释是数学形式的,但内容与以上三大 步骤一致。
[0241] 其中,第一个大步骤(即"顾及拓扑关系的消隐预处理")满足公式(3)_(7)。具 体的,
[0242] colV^sum(V) (3)
[0243] colE^sum(E) (4)
[0244] colF^sum(F) (5)
[0245] slF<colF(6)
[0246] slE+s2E<colE(7)
[0247] 其中,colV指代容器中所有顶点的个数(AllVerticesinthe Collection),colE指代容器中所有边的个数(AllEdgesintheCollection),colF指 代容器中所有平面片的个数(AllFacetsintheCollection).sum(V)指代每个体中顶 点个数的累加和(SumofVerticesinEachBody),sum(E)指代每个体中边个数的累加 和(SumofEdgesinEachBody),sum(F)指代每个体中平面片个数的累加和(Sumof FacetsinEachBody).slF指代存在共享面情况时共享面的个数(SharedFacetsin SpeclthatSolidsareAdjacentbyFacets),slE指代存在共享面情况时共享面包含的 边个数(EdgesinSharedFacetsinSpeclthatSolidsareAdjacentbyFacets),s2E 指代存在共享边情况时共享边的个数(SharedEdgesinSpec2thatSolidsareadjacent byEdges).
[0248] 其中,公式(3)阐述了判定是否存在共享点的过程。其中,若colV=V,则体与体 之间一定是都相离关系;若colV<V,则体与体之间或存在点相邻、或存在边相邻、或存在 面相邻。
[0249] 公式⑷阐述了判定是否存在共享边的过程。其中,若colE=E,则体与体之间或 都相离、或存在点相邻;若colE<E,则体与体之间或存在边相邻、或存在面相邻。
[0250] 公式(5)阐述了判定是否存在共享面的过程。其中,若colF=F,则体与体之间或 都相离、或存在点相邻、或存在边相邻;若colF<F,则体与体之间一定存在面相邻关系。
[0251] 公式(6)表明共享面只是作为面集合的一部分存在。
[0252] 公式(7)表明共享面包含的边和共享边只是作为边集合的一部分存在。
[0253] 第二个大步骤(即"扩展的第一类线消隐处理")满足公式(8)_(17)。具体的,
[0254] vF=fF(8)
[0255] ivF=bF+slF(9)
[0256] slE+s2E<tlvE(10)

【权利要求】
1. 一种顾及拓扑的三维地理空间实体群的线消隐方法,其特征在于:所述三维地理空 间实体群的三维空间数据模型包括节点、边、环、平面片和体这5类基元,其中,点是0维基 元,边与环是1维基元,平面片是2维基元,体是3维基元; 预设的规则如下, 规则1,待消隐的每个实体必须是剖分完全的; 规则2,当某体与另一个体存在的公共元素为2维时,称只共面; 规则3,当某体与另一个体存在的公共元素为1维时,称只共边; 规则4,当某体与另一个体存在的公共元素为0维时,称只共点; 规则5,当某体与另两个体存在的公共元素分别为2维时,称共面面,按照只共面的情 况处理; 规则6,当某体与另两个体存在的公共元素分别为1维与2维时,称共边面,按照只共面 的情况处理; 规则7,当某体与另多个体存在的公共元素分别为1维时,称共边边,按照只共边的情 况处理; 规则8,当某体与另两个体存在的公共元素分别为0维与2维时,称共点面,按照只共面 的情况处理; 规则9,当某体与另两个体存在的公共元素分别为0维与1维时,称共点边,按照只共边 的情况处理; 规则10,当某体与另多个体存在的公共元素分别为〇维时,称共点点,按照只共点的情 况处理; 基于以上预设规则,进行消隐过程,包括以下步骤, 步骤1,顾及拓扑关系的消隐预处理,包括进行平面片的分类和边的分类, 进行平面片的分类如下, (i) 针对体与体之间存在只共面情况时,设定公共面为不可见面; (ii) 针对体与体之间存在只共边情况时,本步骤不做处理; (iii) 针对体与体之间存在只共点情况时,本步骤不做处理; 进行边的分类如下, (i) 针对体与体之间存在只共面情况时,公共面包含的边暂设定为可见面; (ii) 针对体与体之间存在只共边情况时,暂设定公共边为可见边; (iii) 针对体与体之间存在只共点情况时,本步骤不做处理; 步骤2,扩展的第一类线消隐处理,包括子步骤如下, 步骤2. 1,进行后向面剔除,包括找到法向量与视线方向一致的平面片,这些平面片称 后向面,后向面设定为不可见面,不参与后续步骤3 ;找到法向量与视线方向不一致的平面 片,这些平面片称前向面,前向面设定为可见面; 步骤2. 2,进行平面片的分类如下, (i) 将通过后向面剔除找到的所有不可见面,加上步骤1所得所有不可见面,取和得到 完整的不可见面族; (ii) 根据通过后向面剔除找到的可见面得到完整的可见面簇; 步骤2. 3,针对仅相接于2个面的边,进行边的可见性判定如下, (i) 相接于2个不可见面的边,设定为不可见边; (ii) 相接于1个可见面和1个不可见面的边,暂设定为可见边; (iii) 相接于2个可见面的边,暂设定为可见边; 步骤2. 4,进行边的分类,包括将步骤2. 3得到的所有可见边,加上步骤1得到的所有 可见边,取和得到完整的可见边簇,步骤2. 3得到的所有不可见边为完整的不可见边簇; 步骤3,扩展的第二类线消隐处理,包括子步骤如下, 步骤3. 1,边的细分,包括以步骤2. 4所得完整可见边簇中的每条边为潜在可见边,判 断潜在可见边是否被可见面遮挡,当被可见面部分遮挡时,对此边根据与平面片的相交情 况进进行裁切,裁切后的最终每条边称为最简边; 步骤3. 2,最简边的可见性判定,包括采用最简边的中点的可见性来代表整条最简边的 可见性。
2. 如权利要求1所述顾及拓扑的三维地理空间实体群的线消隐方法,其特征在于:步 骤3. 2,中判断最简边的中点的可见性如下, 最简边的中点为三维空间中的点,沿着视线方向所在的空间直线,三维空间中的点在 平面片所在超平面片中一定有一个投影点;此时,投影点和平面片位于同一个超平面中,通 过判断投影点是否位于二维多边形内,得到最简边的中点的可见性。
3. 如权利要求1或2所述顾及拓扑的三维地理空间实体群的线消隐方法,其特征在于:根据消隐过程所得结果,最终可视化效果中可见线的样式和不可见线的样式都采用自定义 设置。
【文档编号】G06T17/05GK104392489SQ201410583209
【公开日】2015年3月4日 申请日期:2014年10月27日 优先权日:2014年10月27日
【发明者】虞昌彬, 李霖, 赵志刚, 贺彪 申请人:武汉大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1