基于共享直线段的平面片束排序方法和系统与流程

文档序号:12675778阅读:302来源:国知局
基于共享直线段的平面片束排序方法和系统与流程

本发明实施例属于软件领域,尤其涉及一种基于共享直线段的平面片束排序方法和系统。



背景技术:

在二维空间中,通过1维基元来构造2维基元(多边形)的研究已经较多。其最早出现于双重独立地图编码(DIME,Dual Independent Map Encoding)格式(Peucker,T.K.et al.(1975).Cartographic Data Structure[J].The Ameircan Cartographer,2(1):55-69;Meixler,D.et al.(1987).Polygonization and Topological Editing at the Bureau of the Census[C].AUTO-CARTO 8Proceedings:731-738.)和拓扑整合地理编码与参考(TIGER,Topologically Integrated Geographic Encoding and Referencing)格式(Peuquest,D.J.(1984).A Conceptual Framework and Comparison of Spatial Data Models[J].Cartographica:The International Journal of Geographic Information and Geovisualization,21(4):66-113;Hodgson,M.E.et al.(1989).Cartographic Data Capture using CAD[C].AUTO-CARTO 9Proceedings:406-415.)的二维数据的多边形化过程之中。前者是通过1维直线段构造2维多边形,后者是通过1维链(直线段的集合)来构造2维多边形。直线段是1维基元,链也是1维基元,以上多边形化算法的核心在于通过1维基元与1维基元之间的夹角计算来寻找构造每个多边形的所有相关1维基元(直线段或链),以上这些针对国外格式二维空间数据提出二维多边形化算法的计算夹角方式,与我国学者提出的左转(或右转)算法(陈春等.(1996).GIS中多边形图拓扑信息生成的数学基础[J].测绘学报,25(4):266-271;杜清运.(1989).地图数据库中多边形数据的自动组织[J].测绘学报,18(3):204-212.)很类似。除此之外,二维多边形化算法还包括:

-Qi算法(齐华等.(1996).建立结点上弧-弧拓扑关系的Qi算法[J].测绘学报,25(3):233-235;齐华.(1997).自动建立多边形拓扑关系算法步骤的优化与改进[J].测绘学报,26(3):254-260;齐华,李德仁.(2005).基于Qi(xi,yi)函数的辐射线空间分割与TIN的约束边镶嵌[J].武汉大学学报(信息科学版),30(3):204-208;齐华,李德仁,朱庆.(2003).确定射线空间相邻关系的两个非角度算法的时间复杂度分析[J].武汉大学学报(信息科学版),28(5):611-614)。

-方位角算法(闫浩文等.(2000).基于方位角计算的拓扑多边形自动构建快速算法[J].中国图象图形学报,5A(7):563-567;闫浩文,王家耀.(2009).地图群组目标描述与自动综合[M].北京:科学出版社;闫浩文等.(2007).计算机地图制图原理与算法基础[M].北京:科学出版社;闫浩文,王明孝等.(2012).计算几何:空间数据处理算法[M].北京:科学出版社.)。

-矢量外积法(高云琼等.(2002).同一结点上弧-弧拓扑关系生成的新算法[J].计算机应用研究,(4):58-59;),

它们的侧重点在于从当前1维基元寻找最邻近1维基元时不再使用夹角值,而且分别借助Qi函数、方位角、矢量积与二叉排序树。以上文献的不同之处在于,针对从1维基元矢量的集合(一种比率尺度数据)推导出1维基元与1维基元之间的排序顺序(一种定序尺度数据),所采用的计算策略有所不同,从而造成算法的空间(时间)复杂度有所区别,但本质上都是针对基于0维共享节点的1维基元集合的排序。

在三维空间中,如何构造有效的3维基元(也称多面体化)远远没有以上二维空间中多边形的构造算法(如上所述称为多边形化)成熟,包括ISO19107'Spatial Schema'(ISO.(2003).ISO/TC 211,ISO International Standard19107:2003,Geographic Information-Spatial Schema.)中存在对于“体”的抽象定义(即GM_Solid和TP_Solid),GML和CityGML中沿用ISO 19107中对于“体”的定义(即gml:Solid)(Protele,C.OpenGIS Geography Markup Language(GML) Encoding Standard,Copyright Open Geospatial Consortium,Inc.,v3.2.1;Groger,G.et al.OGC City Geography Markup Language(CityGML)Encoding Standard,Open Geospatial Consortium,Inc.,v2.0),以上在三维形式化数据结构(3D Formal Data Structure)(Molenaar,M.(1990).A Formal Data Structure for 3D Vector Maps[C].In:Proceedings of EGIS'90,2.Amsterdam,the Netherlands:770-781.)、简化空间模型(SSM,Simplified Spatial model)(Zlatanova,S.(2000).3D GIS for Urban Development[D].Ph.D Dissertation,The Netherlands,ITC.)、城市数据模型(UDM,Urban Data Model)(Coors,V.(2003).3D-GIS in Networking Environments.Computers,Environment and Urban Systems,27:345-357.)、面向对象的三维数据模型(Object-oriented 3D Data Model)(Shi,W.Z.,Yang,B.S.,Li,Q.Q.(2003).An Object-oriented Data Modle for Complex Objects in Three-dimensional Geographical Information Systems[J].International Journal of Geographical Information Science,17(5):411-430.)等各种三维空间数据模型(Zlatanova,S et al.(2004).Topological Models and Frameworks for 3D Spatial Objects[J].Computers&Geosciences,30:419-428;)中都存在3维体对象,但它们均没有显式说明一个有效的3维对象从何而来。

与之对比的,郭仁忠等提出了一种“面向地籍的三维空间数据模型”并给出了其中0维点、1维线、2维面和3维体的明确基元定义,以及基元与基元之间拓扑关系的完整罗列(Guo,R.Z.et al.(2012).Logical Design and Implementation of the Data Model for 3D Cadastre in China[C].3rd International Workshop on 3D Cadastres:Developments and Practices,Shenzhen,China:113-136;),论述了要实现3维产权体的构建不能跨维(换言之,无法通过1维线基元构造3维产权实体,否则会产生二义性),必须基于2维平面片集合构造有效的3维产权体(郭仁忠等.(2010).三维地籍形态分析与数据表达[J].中国土地科学,24(12):45-51;郭仁忠等.(2012).基于面片集合的三维地籍产权体的拓扑自动构建[J].测绘学报,41(4):620-626;Ying,S.et al.(2014).Construction of 3D Volumetric Objects for a3D Cadastral System[J].Transactions in GIS,22p.),这里的“有效的3维产权体”指的是生成的3维产权体不存在叠置也没有缝隙;同时,3维产权体是一个二维流形(2-manifold),即表面上的任何一点的领域都与一个小圆盘是拓扑等价的,或称同胚于二维流形。以上通过2维面片构建3维产权体的基本原理是:寻找构造3维实体包含的所有相关2维平面片,其关键在于基于共享直线段的平面束排序,该方法能够保证3维产权体与3维产权体之间拓扑关系的一致性(贺彪等.(2011).顾及外拓扑的异构建筑三维拓扑重建[J].武汉大学学报(信息科学版),36(5):579-583;李霖等.(2012).空间体对象间三维拓扑构建研究[J].武汉大学学报(信息科学版),37(6):719-723;)。特别的,虞昌彬和郭仁忠等还阐述了一种基于统一逻辑的空间实体构造方法(即Automatic Construction of Spatial Entities Based on Unified Logic,简写为ACSEBUL方法),该方法不仅可以应用于通过1维边/链拓扑自动构建2维多边形,而且可以应用于通过2维平面片拓扑自动构建3维体,而且以上两者在逻辑上是统一的(Guo,R.Z.,Yu Changbin et al.(2015).ACSEBUL:An Approach for the Construction of Spatial Entities Based on Unified Logic[J].Transactions in GIS,29;虞昌彬.(2015).三维地籍产权体几何表达、构造与可视化[D].博士学位论文,武汉:武汉大学;虞昌彬等.(2015).一种地理空间实体构建方法及系统[P].国家发明专利授权号ZL2014103099061,申请日期2014年6月30日,授权日期2015年3月25日.)。

尽管如此,以上关于“面向地籍的三维空间数据模型”一系列相关研究与文献目前只阐述了该关键步骤(即基于共享直线段的平面束排序)的基本思想和原理,尚未给出该关键步骤的形式化,尤其是以上步骤的数值计算过程的形式化描述与分析。即,目前还没有有效的3维基元构造算法,故有必要提出一种新的技术方案以解决上述问题。



技术实现要素:

本发明实施例提供了一种基于共享直线段的平面片束排序方法和系统,旨在解决现有的方法没有有效的3维基元构造算法的问题。

本发明实施例的第一方面,提供了一种基于共享直线段的平面片束排序方法,所述方法包括:

确定三维实体包含的二维平面;

确定所述二维平面的表征矢量;

根据所述二维平面的表征矢量将对应的二维平面投影至XOY平面;

将预设的起始平面变换为X轴正向,且所述起始平面的法向量变换为X轴正向朝上,所述预设的起始平面为所述三维实体包含的二维平面中的任一个二维平面,所述预设的起始平面的表征矢量为起始表征矢量;

在XOY平面上,计算起始表征矢量与确定的其他表征矢量的夹角,并根据夹角的大小确定对应的二维平面与预设的起始平面的远近。

本发明实施例的第二方面,提供了一种基于共享直线段的平面片束排序系统,所述系统包括:

二维平面确定单元,用于确定三维实体包含的二维平面;

表征矢量确定单元,用于确定所述二维平面的表征矢量;

平面投影单元,用于根据所述二维平面的表征矢量将对应的二维平面投影至XOY平面;

起始平面变换单元,用于将预设的起始平面变换为X轴正向,且所述起始平面的法向量变换为X轴正向朝上,所述预设的起始平面为所述三维实体包含的二维平面中的任一个二维平面,所述预设的起始平面的表征矢量为起始表征矢量;

表征矢量的夹角计算单元,用于在XOY平面上,计算起始表征矢量与确定的其他表征矢量的夹角,并根据夹角的大小确定对应的二维平面与预设的起始平面的远近。

在本发明实施例中,由于将三维实体包含的二维平面都投影至XOY平面,因此,在XOY平面上,计算的起始表征矢量与确定的其他表征矢量的夹角的大小即表示该其他表征矢量对应的二维平面与预设的起始平面的远近,从而能够确定三维实体包含的各个二维平面的远近关系,进而实现三维实体的构造。

附图说明

图1是本发明第一实施例提供的ISO 19017'Spatial Schema'中涉及的边界包(boundary package)与共边界包(co-boundary package)的示意图;

图2是本发明第一实施例提供的一种基于共享直线段的平面片束排序方法的流程图;

图3(a)是本发明第一实施例提供的绕Z轴在XOY平面内转的示意图;

图3(b)是本发明第一实施例提供的绕X轴在YOZ平面内转的示意图;

图3(c)是本发明第一实施例提供的绕Y轴在ZOX平面内转的示意图;

图4是本发明第一实施例提供的一种总体技术流程图;

图5(a)是本发明第一实施例提供的一种嵌入于任何三维空间的示意图;

图5(b)是本发明第一实施例提供的一种垂直于XOY平面的示意图;

图5(c)是本发明第一实施例提供的一种平面片简化为直线段的示意图;

图6(a)是本发明第一实施例提供的一种AB在f1和f2中的环绕方向相同的示意图;

图6(b)是本发明第一实施例提供的一种AB在f1和f2中的环绕方向相异的示意图;

图7(a)是本发明第一实施例提供的一种初始平面片集合的示意图;

图7(b)是本发明第一实施例提供的一种基于分享直线段的平面束的示意图;

图7(c)是本发明第一实施例提供的一种将三维平面束转换至二维直线段束的示意图;

图8是本发明第二实施例提供的一种基于共享直线段的平面片束排序系统的示意性框图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明第一实施例中,确定三维实体包含的二维平面,确定所述二维平面的表征矢量,根据所述二维平面的表征矢量将对应的二维平面投影至XOY平面,将预设的起始平面变换为X轴正向,且所述起始平面的法向量变换为X轴正向朝上,所述预设的起始平面为所述三维实体包含的二维平面中的任一个二维平面,所述预设的起始平面的表征矢量为起始表征矢量,在XOY平面上,计算起始表征矢量与确定的其他表征矢量的夹角,并根据夹角的大小确定对应的二维平面与预设的起始平面的远近。

为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。

实施例一:

由于关于“面向地籍的三维空间数据模型”一系列相关研究与文献目前只阐述了该关键步骤(即基于共享直线段的平面束排序)的基本思想和原理,尚未给出该关键步骤的形式化,尤其是以上步骤的数值计算过程的形式化描述与分析。以上步骤的形式化表达(尤其是其数值计算过程的形式化表达,典型的给予计算公式的形式化表达)有助于:

(1)首先,希望这成为地理信息科学领域(特别是三维空间数据组织这一小领域)的基础性知识(就像“如何通过三个点确定一个平面”或“如何通过四个点确定一个圆”的形式化计算公式是数学领域中的基础性知识一般),这些基础性知识作为奠基非常重要;

(2)同时,方便相关领域的初学者直接调用与学习,方便他们“依葫芦画瓢”(即直接照着形式化的数学计算公式去进一步实现);

(3)同时,为后来相关领域研究者提供直接的参考与调用,也即方便后来者在此基础上快速实现有效的3维实体构建并把更多的研究精力花费在后续研究之中。

出于以上三点考虑,这里认为本发明具有极其重要的基础理论研究价值。

为了更为清晰地阐述本发明实施例提供的基于共享直线段的平面片束排序方法,这里借用ISO 19107'Spatial Schema'边界(Boundary)和共边界(Coboundary)包来说明(如附图1所示):在二维空间中,为了封闭一个多边形,需要找到构造该多边形的所有相关边(即找到TP_Face包含的TP_DirectedEdge集合,如线条所围的区域1);如何判断边与边是否相关,关键在于从基于节点的边束中找到从起始边出发的第一条边和最后一条边,其本质是基于共享节点的边束排序(即基于TP_Node的TP_DirectedEdge集合排序,如区域3)。相对的,在三维空间中,为了封闭一个体,需要找到构造该体的所有相关平面片(即找到TP_Solid包含的TP_DirectedFace集合,如区域2)。如何判断平面片与平面片是否相关,关键在于从基于共享直线段平面束中找到从起始平面片出发的第一个平面片和最后一个平面片,其本质是基于共享直线段的平面束排序(即基于TP_Edge的TP_DirectedFace集合排序,如区域4)。本发明着重于区域4的数值计算过程的形式化表达,事实上区域4的具体实现包含了区域3。

更为具体的,要实现“三维实体的构造方法”,主要在于实现“基于共享直线段的平面束排序”,其数值计算过程包括如下步骤:(1)计算平面片的表征矢量;(2)计算旋转方位角及旋转矩阵;(3)比较几何变换后的平面片表征矢量,后面详述。

图2示出了本发明第一实施例提供的一种基于共享直线段的平面片束排序方法的流程图,详述如下:

步骤S21,确定三维实体包含的二维平面。

具体地,寻找三维实体包含的所有相关的二维平面(或称平面片,简称平面)。

步骤S22,确定所述二维平面的表征矢量。

可选地,所述步骤S22具体包括:

A1、确定所述二维平面的法向量和环绕方向。

A2、叉乘所述二维平面的法向量和环绕方向,叉乘的结果为所述二维平面的表征矢量。

具体地,多个平面可能相交于多条共享直线段,可以选取其中任意一条进行排序,排序结果一致。设其中一条共享直线段为Seg或Seg(sPt,ePt),其中,sPt为该共享直线段本身的起点,ePt为该共享直线段本身的终点,该共享直线段本身方向始终由sPt指向ePt,该方向也称“物理方向”(标记为SegV)。

值得注意的是,该共享直线段同时在每个相接平面中也有一个方向,称“环绕方向”(标记为rSegV),该方向始终保持与形成该平面法向量的直线段环绕方向一致(即符合右手定则,四指方向为构成该平面的直线段依次排列方向,大拇指指向该平面的法向量)。具体的,将共享直线段(Seg)在某一相接平面内遵循右手定则形成的有向直线段称为“环绕直线段”(标记为rSeg),由“环绕直线段”的起点指向终点所形成的矢量称“环绕方向”(标记为rSegV)。针对指定的共享直线段,其在某一平面内的“环绕方向”与本身“物理方向”或相同或相反。

针对平面束(多个二维平面)中的每个平面(标记为facet),由环绕直线段的终点往起点的视角望去,该平面简化为一条直线段,记为“表征直线段”(标记为ResSeg)。由表征直线段的起点指向终点所形成的矢量,称为“表征矢量”(标记为ResSegV)。该表征矢量可以由该平面片的法向量(标记为facet.normal)与直线段在该平面内的环绕方向(rSegV)通过矢量叉乘得到。在叉乘时,之所以采用共享直线段在该平面内的“环绕方向”而非共享直线段的本身“物理方向”,是为了保证叉乘结果能够代表该平面片。

步骤S23,根据所述二维平面的表征矢量将对应的二维平面投影至XOY平面。

由于平面束仍然位于三维空间中,也即表征直线段仍然位于统一的三维平面内。为数值计算方便,需要将所有表征直线段转移至统一的二维平面内,从而方便借助表征直线段的排序来代表相应平面片的排序。此时,需要借助保持拓扑性质不变的三维几何变换。值得注意的是,表征直线段之间的排序结果(即相对位置)是唯一的,但这些表征直线段在同一平面片中的绝对位置却可以是任意的。

其中,常用的三维几何变换包括平移变换、旋转变换、比例变换、切错变换等。这里只列出了采用旋转变换的方法。如图3(a)、3(b)、3(c)所示,分别为绕Z轴在XOY平面内旋转、绕X轴在YOZ平面内旋转、绕Y轴在ZOX平面内旋转的示意图。

(i)绕Z轴旋转的情况:

当绕Z轴旋转时,即从Z轴正向轴往原点望去,在XOY平面内逆时针旋转一定角度。针对角度的大小,逆时针方向旋转角度数为正值,顺时针方向旋转角度为负值,如图3(a)所示(从X正向轴旋转+90度至Y正向轴)。具体计算公式如(1)所示。举例而言,从任意位置开始旋转+90度后坐标变换如公式(2)所示,如可以从(4,3,0,1)旋转至(-3,4,0,1)。

(ii)绕X轴旋转的情况:

当绕X轴旋转时,即从X正向轴往原点望去,在YOZ平面内逆时针旋转一定角度。针对角度的大小,逆时针方向旋转角度为正值,顺时针旋转角度为负值,如图3(b)所示(从Y正向轴旋转+90度至Z正向轴)。具体计算公式如(3)所示。举例而言,从任意位置开始旋转+90度后坐标变换为公式(4)所示,如可以从(0,4,3,1)旋转至(0,-3,4,1)。

(iii)绕Y轴旋转的情况:

当绕Y轴旋转时,即从Y轴正向轴往原点望去,在ZOX平面内逆时针旋转一定角度。针对角度的大小,逆时针方向旋转角度为正值,顺时针旋转角度为负值,如图3(c)所示(从Z正向轴旋转+90度至X正向轴)。具体计算公式如(5)所示。举例而言,从任意位置开始旋转+90度后坐标变换为公式(6)所示,如可以从(4,0,3,1)旋转至(3,0,-4,1)。

以上给出了几何变化中旋转操作的变换矩阵(分别是绕Z轴旋转、绕X轴旋转、绕Y轴旋转),变换矩阵分别是Matrix(1),Matrix(2),Matrix(3)。

针对旋转操作,采用如下计算两个二维向量(x1,y1)与(x2,y2)所形成方向角(directionAngle),这在后面会多处被调用:

cosValue=(x1*x2+y1*y2)/(Math.sqrt(x1*x1+y1*y1)*Math.sqrt(x2*x2+y2*y2))

(7)

betweenAngle=Math.arccos(cosValue)(8)

x1<0,directionAngle=2*PI-betweenAngle (9)

x1≥0,directionAngle=betweenAngle (10)

其中,Math.sqrt表示求取平方根的函数,PI为圆周率。

可选地,所述步骤S23具体包括:

B1、计算起始法向量(initFN.x,initFN.y)与(0,1)形成的方向角angle1,所述起始法向量为所述预设的起始平面的法向量。具体地,利用上面的公式(7)至(10)计算(initFN.x,initFN.y)与(0,1)形成的方向角angle1。其中,initFN.x为起始法向量initFN在X轴上的分量,同理,initFN.y为起始法向量initFN在Y轴上的分量。

B2、根据所述angle1将环绕直线段所形成的矢量rSegV从三维空间变换为位于YOZ平面上的rSegV_YOZ。具体地,通过下式将环绕直线段所形成的矢量rSegV从三维空间变换为位于YOZ平面上的rSegV_YOZ:

{rSegV_YOZ.x,rSegV_YOZ.y,rSegV_YOZ.z,1}={rSegV.x,rSegV.y,rSegV.z,1}Matrix(1)(angle1) (11)

B3、计算所述rSegV_YOZ与(0,1)形成的方向角angle2。其中,angle2的计算与angle1的类似,此处不再赘述。

B4、根据所述angle2将所述rSegV_YOZ变换为Z轴正向,以将对应的二维平面投影至XOY平面。具体地,通过下式将对应的二维平面投影至XOY平面:

{rSegV_Z.x,rSegV_Z.y,rSegV_Z.z,1}={rSegV_YOZ.x,rSegV_YOZ.y,rSegV_YOZ.z,1}Matrix(2)(angle2) (13)

步骤S24,将预设的起始平面变换为X轴正向,且所述起始平面的法向量变换为X轴正向朝上,所述预设的起始平面为所述三维实体包含的二维平面中的任一个二维平面,所述预设的起始平面的表征矢量为起始表征矢量。

假设起始法向量标记为initFN,则起始表征矢量的各个分量计算公式如下:

iResSegV.x=initFN.y*rSegV.z-initFN.z*rSegV.y (15)

iResSegV.y=initFN.z*rSegV.x-initFN.x*rSegV.z (16)

iResSegV.z=initFN.x*rSegV.y-initFN.y*rSegV.x (17)

可选地,所述步骤S24具体包括:

C1、根据所述angle1和所述angle2将所述起始表征矢量iResSegV转换为XOY平面的矢量iResSegV_XOY。

C2、计算(-iResSegV_XOY.y,iResSegV_XOY.x)与(0,1)形成的方向角angle3。

C3、根据所述angle3将所述iResSegV_XOY变换为X轴正向的iResSegV_X,以将预设的起始平面变换为X轴正向,且所述起始平面的法向量变换为X轴正向朝上。

上述C1~C3中,对于起始表征矢量(iResSegV)进行两次旋转,即根据angle1实现第一次旋转,根据angle2实现第二次旋转。具体公式如下:

iResSegV_XOY=iResSegV*Matrix(1)(angle1)*Matrix(2)(angle2) (18)

再计算(-iResSegV_XOY.y,iResSegV_XOY.x)与(0,1)形成的方向角angle3,其中,angle3的计算与angle1的类似,此处不再赘述。

之后,根据angle3实现第三次旋转(仍然使用变换矩阵Matrix(1)),此时不仅环绕直线段(rSeg)所形成的矢量为Z轴正向,同时X轴正向与X轴正向朝上也分别代表起始平面片和起始平面片方向,具体如下:

{iResSegV_X.x,iResSegV_X.y,iResSegV_X.z,1}=

{iResSegV_XOY.x,iResSegV_XOY.y,iResSegV_XOY.z,1}Matrix(1)(angle3)(19)

通过上述计算得到三个旋转方位角(即angle1,angle2,angle3)和对应旋转矩阵(即Matrix(1),Matrix(2),Matrix(1)),将它们作用于每个平面从而得到对应的表征矢量,运算后的所有表征矢量统一位于XOY平面,便于下一步比较。

步骤S25,在XOY平面上,计算起始表征矢量与确定的其他表征矢量的夹角,并根据夹角的大小确定对应的二维平面与预设的起始平面的远近。

可选地,所述步骤S25具体包括:

D1、在XOY平面上,分别判断所述iResSegV_X的分量iResSegV_X.x、iResSegV_X.y与0的大小关系。

D2、根据判断结果选择计算起始表征矢量与确定的其他表征矢量的夹角的方式,并根据夹角的大小确定对应的二维平面与预设的起始平面的远近。

将平面统一到XOY平面后,沿着Z轴正方向往原点望去,基于共享直线段的平面束已经简化为了基于共享点的直线段束。故而,能够计算从X轴正向(即起始表征矢量,代表起始平面)出发,与每个表征矢量(代表每个平面)所形成的角度大小(总是沿着逆时针)。

此时,顾及所处空间象限而计算角度,方法如下:

iResSegV_X.x≥0并且iResSegV_X.y≥0,那么

_angle=Math::arccos(iResSegV_X.x) (21)

iResSegV_X.x≤0并且iResSegV_X.y≥0,那么

_angle=PI-Math::arccos(-iResSegV_X.x)(22)

iResSegV_X.x≤0并且iResSegV_X.y≤0,那么

_angle=PI+Math::arccos(-iResSegV_X.x)(23)

iResSegV_X.x≥0并且iResSegV_X.y≤0,那么

_angle=2*PI-Math::arccos(iResSegV_X.x) (24)

比较这些角度,找出最大角和最小角。其中,最小角表示其所在的表征矢量对应的平面即“从起始平面片出发,沿着其法向量所指方向的最邻近平面”,简称“最近平面”;最大角表示其所在的表征矢量对应的平面即“从起始平面出发,沿着其法向量所指方向的最远平面”,简称“最远平面”。

本发明第一实施例中,确定三维实体包含的二维平面,确定所述二维平面的表征矢量,根据所述二维平面的表征矢量将对应的二维平面投影至XOY平面,将预设的起始平面变换为X轴正向,且所述起始平面的法向量变换为X轴正向朝上,所述预设的起始平面为所述三维实体包含的二维平面中的任一个二维平面,所述预设的起始平面的表征矢量为起始表征矢量,在XOY平面上,计算起始表征矢量与确定的其他表征矢量的夹角,并根据夹角的大小确定对应的二维平面与预设的起始平面的远近。由于将三维实体包含的二维平面都投影至XOY平面,因此,在XOY平面上,计算的起始表征矢量与确定的其他表征矢量的夹角的大小即表示该其他表征矢量对应的二维平面与预设的起始平面的远近,从而能够确定三维实体包含的各个二维平面的远近关系,进而实现三维实体的构造。

参考图4,为了更清楚直观地阐述几个重要概念的(典型的如共享直线段、环绕方向、表征矢量等),下面以具体的示例进行说明:

图5(a)、图5(b)、图5(c)(下面为了方便描述,用图5表示图5(a)、图5(b)、图5(c)中的任一个)给出了在三维空间中几何变换过程,图6(a)、图6(b)(下面为了方便描述,用图6表示图6(a)、图6(b)中的任一个)放大了平面束从而给出了平面片中每个平面片中直线段的走向。具体的,由附图5可见,AB是共享直线段(其本身具有物理方向,该物理方向是固定的、唯一的);同时,由图6可见,AB在每个平面片中有着不同的环绕方向,包括:

(i)AB在平面片f2中的环绕方向为由B指向A(故而平面片f2一般表述为BAPO,其法向量指向右侧)。

(ii)AB在平面片f1中的环绕方向为由B指向A(故而平面片f1一般表述为BADC,其法向量指向右侧)。

(iii)AB在平面片f5中的环绕方向为由A指向B(故而平面片f5一般表述为ABEF,其法向量指向左侧)。

如附图5所示,一共存在5个平面片,也即存在5个表征矢量,包括:

(i)平面片f2的表征矢量为AP(由“平面片f2的法向量(指向右侧)”与“AB在平面片f2中的环绕方向(如上所述,即由B指向A)”通过右手定则叉乘获得)。

(ii)平面片f1的表征矢量为AD(由“平面片f1的法向量(指向右侧)”与“AB在平面片f1中的环绕方向(如上所述,即由B指向A)”通过右手定则叉乘获得)。

(iii)平面片f5的表征矢量为AF(由“平面片f5的法向量(指向左侧)”与“AB在平面片f5中的环绕方向(如上所述,即由A指向B)”通过右手定则叉乘获得)。

值得注意的是,针对表征矢量的获得(平面片f2的表征矢量是AP、平面片f1的表征矢量是AD、平面片f5的表征矢量是AF),虽然通过图形直观分析是显而易见的(即由图5(a)和图5(b)很容易在图5(c)中看出以上表征矢量,即共享直线段AB中A点仍然可见而B点被遮住,平面片f2异于AB的一侧中O点被P点遮住而造成平面片f2简化表征为AP,平面片f1异于AB的一侧中C点被D点遮住而造成平面片f1简化表征为AD,平面片f5异于AB的一侧中E点被F遮住从而平面片f5被简化表征为AF),但是要在计算机中实现以上平面片对应表征矢量的准确获得却并不能依靠可视化读图,故而以上共享直线段、环绕方向、平面片法向量的计算以及右手叉乘运算都是必须的。

通过以上计算步骤,可以发现:无论每个平面片的法向量如何变化(有的指向左侧,而有的指向右侧)、无论共享直线段在每个平面片的环绕方向如何变化(有的从直线段的物理起点指向物理终点,而有的从直线段的物理终点指向物理起点),基于共享直线段的平面束的表征矢量集合始终是呈现“从中心往周边的(类似花束的)散发状”的。换言之,每个嵌入于三维空间中的二维平面束排序都可以简化为嵌入于二维空间中的一维直线段束排序。特别的,以平面片f1的表征矢量AD出发(即起始表征矢量),找到的最近表征矢量为AF(代表平面片f5),找到的最远表征矢量为AP(代表平面片f2)。

作为进一步补充,这里再给出一个简单案例来直观阐述平面束排序,其图形与对应统计数据分别如附图7(a)-(c)和表1所示。

具体的,在三维空间中,共享直线段的起点和终点分别是sPt和ePt(如图7(a)所示),其本身“物理方向”(-0.460,0.624,-0.632)。相接于该共享直线段的平面片集合包括Facet_A,Facet_B,Facet_C,Facet_D,Facet_E,Facet_F,Facet_G(如图7(b)所示)。根据该共享直线段本身“物理方向”与其在平面片中“环绕方向”的异同,以上平面片集合可以分为两组,一组是Facet_E,Facet_D,另一组是Facet_G,Facet_C,Facet_A,Facet_F,Facet_B。针对上述每个平面片,首先如上计算其表征矢量,之后如上计算三个旋转方位角(及相应旋转矩阵)并实现每个平面片表征矢量的几何表换,具体如表1中后面几列所示。

表1:

其中,在几何变换后(如图7(c)所示),共享直线段简化为O点;由于Facet_B是起始平面片,故而表征矢量ob(代表Facet_B)被简化为X轴正向:从ob出发,沿着逆时针方向望去,依次排列的分别是oa(代表Facet_A),og(代表Facet_G),of(代表Facet_F),oe(代表Facet_E),od(代表Facet_D),oc(代表Facet_C)。其中,oa与ob形成角度最小,代表Facet_A是Facet_B的“最近平面片”;oc与ob形成的角度最大,代表Facet_C是Facet_B的“最远平面片”,这与实际情况统计的比较结果是一致的。

在这里,为了能够更详细地阐述本发明提出的基于共享直线段的平面片束排序方法,将其应用于“基于统一逻辑的构体方法”与“基于左转(或方位角)的构体方法”(在技术背景中已经给出)。其基本原理与具体实现(包括本发明给出的三大步骤)都一样;以上两种构体方法的区别在于,前者会一边寻体一边详细记录构体过程中每个平面片如何使用(每个平面片最多被使用2次)从而准确定位目标体集合(最多找到一个包含所有最小体的最大体,该最大体是不需要的);而后者寻体是盲目的搜索,会发现除了目标体(也称有效体)之外的许多错误体和冗余体,需要事后(通过体积计算等)剔除。

同时,采用典型三维案例用于验证,这些案例来自中国广东省深圳市的三维产权体数据(三维宗地及三维建筑体),包括:

(1)后海地下停车场(Underground Parking Lot,简写为UPL);

(2)卓越世纪中心(Excellence Century Center,简写为ECC);

(3)深港西部通道(Hongkong-Shenzhen Western Corridor,简写为HSWC);

(4)中兴通讯(Zhongxin Telecommunication Center,简写为ZTC);

(5)供电局(Power Supply Building,简写为PSB);

(6)华润万象成(MixC);

(7)会展中心(Convention&Exhibition Center);

(8)瀚盛花园小区B1建筑体1-7层;

(9)瀚盛花园小区B2建筑体1-8层;

(10)瀚盛花园小区B3建筑体1-5层;

(11)瀚盛花园小区B4建筑体1-8层;

以上三维案例的对应统计数据如表2所示。

表2:

如表2所示,在每个案例中,代表初始平面片的个数,描述了输入数据;在基于ACSEBUL方法给予寻体的过程中,涉及参数包括外部平面片个数(exterior Facet,简写为eF)、内部平面片个数(interior Facet,简写为iF)、排序找结束平面片次数(sort last Facet,简写为slF)、排序找起始平面片次数(sort first Facet,简写为sfF)、排序找平面片总次数(sort Facet,简写为sF)、分配给每个平面片的平均排序次数(sort Per Facet,简写为sPF)、寻到体个数(Body,简写为B);在基于左转(右转)方法、方位角方法给予寻体的过程中,涉及参数包括排序找平面片次数(sort Facet 1,简写为sF1)、分配给每个平面片的平均排序次数(sort Per Facet1,简写为sPF1)、寻到所有体个数(all Body,简写为aB)、分配给每个平面片的平均搜索体个数(all body Per Facet,简写为abPF)、找到的错误体个体(error Body,简写为eB)、找到的冗余体个数(duplicated Body,简写为dB)、找到的有效体个数(valid Body,简写为vB)、寻体有效率(Valid Ratio,简写为VR)。特别的,在这里还将每个普通平面片(每个平面片包含至少3条边)以构造边为约束给予三角化剖分(Constrained Delaunay Triangulation,简写为CDT)后再次给予构体操作。换言之,此时用于构体的每个平面片就是三角形面片(三角形面片是普通平面片的特例)。

具体的,在前者寻体方法中,每个平面片包含至少3条边,从每条边出发能确定唯一的最邻近平面片(由sfF代表),由每条边出发能确定唯一的最远平面片(由slF代表),sF代表构体过程中的排序总次数,sPF代表分摊至每个平面片的平均排序次数。它们满足如下:

sF=slF+sfF=2*slF=2*sfF (25)

sPF=sF/F≥6 (26)

在平面片给予CDT情况中,每个平面片都是三角形(具有确定的三条边),满足如下:

sPF=sF/F=6(27)

相对的,在后者寻体方法中,由于是盲目寻找并事后剔除无效体(包括错误体和冗余体),故而会大大增加平面片的排序次数;尤其是在给予面片CDT的情况下,构成同一个有效体的面片数大幅度增加,那么会造成找到的错误体和冗余体也更多。它们满足如下:

aB=eB+dB+vB (28)

VR=vB/aB,VB(usingCDT)<VB(not usingCDT) (29)

sF1>sF,sPF1>sPF (30)

以上三维案例成功验证了基于共享直线段的平面束排序的数值计算过程(包括三个大步骤)的正确性。

应理解,在本发明实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

实施例二:

图8示出了本发明第二实施例提供的一种基于共享直线段的平面片束排序系统的结构图,该基于共享直线段的平面片束排序系统可用于移动终端中,该移动终端可以包括经无线接入网RAN与一个或多个核心网进行通信的用户设备,该用户设备可以是移动电话(或称为“蜂窝”电话)、具有移动设备的计算机等,例如,用户设备还可以是便携式、袖珍式、手持式、计算机内置的或者车载的移动装置,它们与无线接入网交换语音和/或数据。又例如,该移动设备可以包括智能手机、平板电脑、个人数字助理PDA、销售终端POS或车载电脑等。为了便于说明,仅示出了与本发明实施例相关的部分。

该基于共享直线段的平面片束排序系统包括:二维平面确定单元81、表征矢量确定单元82、平面投影单元83、起始平面变换单元84、表征矢量的夹角计算单元85。其中:

二维平面确定单元81,用于确定三维实体包含的二维平面。

表征矢量确定单元82,用于确定所述二维平面的表征矢量。

可选地,所述表征矢量确定单元82包括:

二维平面的法向量确定模块,用于确定所述二维平面的法向量和环绕方向。

法向量和环绕方向叉乘模块,用于叉乘所述二维平面的法向量和环绕方向,叉乘的结果为所述二维平面的表征矢量。

平面投影单元83,用于根据所述二维平面的表征矢量将对应的二维平面投影至XOY平面。

可选地,所述平面投影单元83包括:

第一方向角计算模块,用于计算起始法向量(initFN.x,initFN.y)与(0,1)形成的方向角angle1,所述起始法向量为所述预设的起始平面的法向量,根据所述angle1将环绕直线段所形成的矢量rSegV从三维空间变换为位于YOZ平面上的rSegV_YOZ。具体地,利用上面的公式(7)至(10)计算(initFN.x,initFN.y)与(0,1)形成的方向角angle1。其中,initFN.x为起始法向量initFN在X轴上的分量,同理,initFN.y为起始法向量initFN在Y轴上的分量。

第二方向角计算模块,用于计算所述rSegV_YOZ与(0,1)形成的方向角angle2,根据所述angle2将所述rSegV_YOZ变换为Z轴正向,以将对应的二维平面投影至XOY平面。

起始平面变换单元84,用于将预设的起始平面变换为X轴正向,且所述起始平面的法向量变换为X轴正向朝上,所述预设的起始平面为所述三维实体包含的二维平面中的任一个二维平面,所述预设的起始平面的表征矢量为起始表征矢量。

可选地,所述起始平面变换单元84包括:

起始表征矢量转换模块,用于根据所述angle1和所述angle2将所述起始表征矢量iResSegV转换为XOY平面的矢量iResSegV_XOY。

第三方向角计算模块,用于计算(-iResSegV_XOY.y,iResSegV_XOY.x)与(0,1)形成的方向角angle3。根据所述angle3将所述iResSegV_XOY变换为X轴正向的iResSegV_X,以将预设的起始平面变换为X轴正向,且所述起始平面的法向量变换为X轴正向朝上。

表征矢量的夹角计算单元85,用于在XOY平面上,计算起始表征矢量与确定的其他表征矢量的夹角,并根据夹角的大小确定对应的二维平面与预设的起始平面的远近。

可选地,所述表征矢量的夹角计算单元85包括:

分量比较模块,用于在XOY平面上,分别判断所述iResSegV_X的分量iResSegV_X.x、iResSegV_X.y与0的大小关系。

夹角计算模块,用于根据判断结果选择计算起始表征矢量与确定的其他表征矢量的夹角的方式,并根据夹角的大小确定对应的二维平面与预设的起始平面的远近。

本发明第二实施例中,由于将三维实体包含的二维平面都投影至XOY平面,因此,在XOY平面上,计算的起始表征矢量与确定的其他表征矢量的夹角的大小即表示该其他表征矢量对应的二维平面与预设的起始平面的远近,从而能够确定三维实体包含的各个二维平面的远近关系,进而实现三维实体的构造。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

本专利受资助于“国土资源部城市土地资源监测与仿真重点实验室开放基金资助课题(KF-2016-02-001).The Project Supported by the Open Fund of Key Laboratory of Urban Land Resources Monitoring and Simulation,Ministry of Land and Resources(KF-2016-02-001)”以及“测绘遥感信息工程国家重点实验室资助项目及编号(15I03).Open Research Fund of State Key Laboratory of Information Engineering in Surveying,Mapping and Remote Sensing(15I03)”以及“国家自然科学基金资助项目(项目批准号:41601428).Project Supported by National Natural Science Foundation of China(Grant No.41601428)”以及“2016年度浙江省博士后科研项目择优资助课题立项(立项课题名称:关于LADM的我国不动产统一登记建模_以浙江省为例)”。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1