一种基于三角形区域方程判断点与面拓扑关系的方法技术

技术编号:15112299 阅读:54 留言:0更新日期:2017-04-09 02:55
本发明专利技术提供了一种基于三角形区域方程判断点与面拓扑关系的方法,包括步骤:S1、构建三角形区域方程;S2、确定点与三角形区域拓扑关系的判断方法;S3、将面状区域划分为三角形区域,并依次存储三角形区域的标识号及其顶点坐标;S4、将监测点代入步骤S3中产生的三角形的区域方程,判断监测点与面状区域的拓扑关系。本发明专利技术能够适用于任意形状的面状区域,具有通用性;本发明专利技术不仅能够判断点与面的包含和相离状态,而且适合判断点是否在面的边界上;本发明专利技术在一定程度上降低了算法复杂度,当存在监测点在存储的第一个三角形区域内部或边界情况时,所需要的计算量最小。

【技术实现步骤摘要】

本专利技术属于空间数据处理
,尤其涉及一种基于三角形区域方程判断点与面拓扑关系的方法
技术介绍
基于点、线、面三类地理实体构成的空间数据在描述地理空间事物或现象的过程中,拓扑关系起着重要的作用,拓扑表达是描述空间数据图形间关系不变性的重要方法;空间数据的拓扑关系包括邻接关系、关联关系和包含关系,点状实体和面状实体的拓扑关系主要指包含关系和关联关系。点与面拓扑关系的判断具有重要意义:一、能够清楚地反映点状实体和面状实体之间的空间位置关系,有利于进行地理实体重建;二、作为判断线与面、面与面拓扑关系的基础;三、是地理实体选取、信息查询、空间分析等相关空间数据操作的依据,例如鼠标点击选取面状实体、点击查看面状实体属性信息、点与面的叠置分析等操作。在空间数据结构中,面状实体通常用多边形区域描述,因此,点与面的拓扑关系所描述的空间关系等效于点与多边形区域的关系,所谓的判断点与面的拓扑关系即确定点在多边形内或在多边形边界上或在多边形外部。关于点与多边形位置关系的判断方法已有众多研究,代表性算法如下:射线法,通过计算监测点出发的射线与多边形边界的交点个数判断点在多边形内部或外部;等面积法,通过监测点与多边形边界点相连构成的三角形面积之和是否与多边形面积相等确定其位置关系;角度法,类似于等面积法,即通过监测点与多边形边界点相连构成的角度之和是否为360度确定其位置关系;多边形剖分方法,该类算法首先通过某种方式将多变形剖分成若干亚图形(例如凸多边形、梯形等)然后按某种规则(例如树结构)存储和检测点与亚图形的位置关系。此外,还有基于多边形边界方向的判断法、矢量相乘方法以及在上述算法基础上改进的计算方法。综合分析现有的判断方法,存在如下不足:1.时间复杂度高,例如射线算法,尽管该算法不用对多边形进行预处理,容易实现,但其时间复杂度为O(N);2.使用局限性,有的算法只局限于特定类型的多边形,例如等面积法和角度法只适用于凸多边形;3.判断效率不高,特别是对于复杂多边形,有些判断方法在执行时存在内存开销大、效率低下的问题。
技术实现思路
本专利技术的目的在于提供一种效率较高、适用于任意面状区域与点的拓扑关系判断方法,旨在解决点与面拓扑关系判断方法的效率低下以及使用受限的问题。本专利技术是这样实现的,一种基于三角形区域方程判断点与面拓扑关系的方法,包括步骤如下:S1、构建三角形区域方程三角形区域方程的构建依据是:原区域划分后各子区域面积之和保持不变且等于原区域面积。结合图1所示进行说明,三角形Δabc,顶点坐标分别为a(x1,y1)、b(x2,y2)、c(x3,y3),监测点为o(x,y),根据原区域划分后总面积保持不变且等于原区域面积的规律,如果点o(x,y)在三角形内或者三角形某条边上,则满足公式1:SΔabc=SΔabo+SΔaco+SΔbco公式1SΔabc表示三角形Δabc的面积,SΔabo表示三角形Δabo的面积,SΔaco表示三角形Δaco的面积,SΔbco表示三角形Δbco的面积。根据三角形面积计算公式,推导出以顶点坐标为参数的三角形面积公式表达式。以SΔabc的计算为例,其面积公式如公式2所示:SΔabc=1/2*Lab*h公式2Lab表示三角形Δabc的边ab的长度,h表示三角形Δabc的顶点c到ab边的距离;根据三角形Δabc的顶点坐标计算边ab的长度Lab的计算公式如公式3所示;Lab=((x1-x2)2+(y1-y2)2)1/2公式3根据三角形Δabc的顶点坐标计算顶点c到ab边的距离h的计算公式如公式4所示:h=|x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2|/((x2-x1)2+(y1-y2)2)1/2公式4||表示取绝对值;将公式3和公式4带入公式2,得到基于顶点坐标的三角形面积公式,如公式5所示;SΔabc=1/2*|x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2|公式5同理可以获得SΔabo、SΔaco、SΔbco,其表达式如公式6-8所示;SΔabo=1/2*|x1*y2+x2*y+x*y1-x1*y-x2*y1-x*y2|公式6SΔaco=1/2*|x1*y+x*y3+x3*y1-x1*y3-x*y1-x3*y|公式7SΔbco=1/2*|x*y2+x2*y3+x3*y-x*y3-x2*y-x3*y2|公式8将公式5、公式6、公式7、公式8带入公式1,可得公式9,即三角形的区域方程。|x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2|=|x1*y2+x2*y+x*y1-x1*y-x2*y1-x*y2|+|x1*y+x*y3+x3*y1-x1*y3-x*y1-x3*y|+|x*y2+x2*y3+x3*y-x*y3-x2*y-x3*y2|公式9S2、确定点与三角形区域拓扑关系的判断方法根据S1中构建的三角形区域方程,将监测点的坐标(x,y)带入三角形区域方程,如果不满足公式9的等式条件,表明该监测点不在三角形区域内,点与三角形区域呈相离状态;否则,表明该监测点在三角形区域内或者边界上,然后将监测点分别代入三角形三条边所在的直线方程,如果满足任一直线方程,则表明该监测点在三角形区域边界上,如果均不满足三条直线方程,则表示该监测点在三角形区域内部。S3、将面状区域划分为三角形区域,并依次存储三角形区域的标识号及其顶点坐标将面状区域划分为三角形区域的原则是:所划分的每个三角形区域均属于面状区域的范围;所划分的所有三角形区域范围之和等于面状区域范围。首先判断面状区域边界的形状,然后按照面状区域边界呈凸多边形情况或呈凹多边形情况分别进行操作,结合图2进行阐述。(1)按照存储顺序判断面状区域所有顶点的凹凸性,如果存在凹点,则面状区域边界呈凹多边形,并按判断顺序分别存储凹顶点和凸顶点;如果不存在凹点,则面状区域边界呈凸多边形。判断面状区域顶点凹凸性的方法如下:按照面状区域顶点的存储顺序,依次取顺序相连的三个顶点(Vi,Vi+1,Vi+2),形成以中间点Vi+1为顶点的角∠ViVi+1Vi+2,如果∠ViVi+1Vi+2大于180度,则顶点Vi+1为凹点;否则,顶点Vi+1为凸点。(2本文档来自技高网
...

【技术保护点】
一种基于三角形区域方程判断点与面拓扑关系的方法,其特征在于,该方法包括步骤如下:S1、构建三角形区域方程;S2、确定点与三角形区域拓扑关系的判断方法;S3、将面状区域划分为三角形区域,并依次存储三角形区域的标识号及其顶点坐标;S4、将监测点代入步骤S3中产生的三角形的区域方程,判断监测点与面状区域的拓扑关系。

【技术特征摘要】
1.一种基于三角形区域方程判断点与面拓扑关系的方法,其特
征在于,该方法包括步骤如下:
S1、构建三角形区域方程;
S2、确定点与三角形区域拓扑关系的判断方法;
S3、将面状区域划分为三角形区域,并依次存储三角形区域的标
识号及其顶点坐标;
S4、将监测点代入步骤S3中产生的三角形的区域方程,判断监
测点与面状区域的拓扑关系。
2.如权利要求1所述的基于三角形区域方程判断点与面拓扑关
系的方法,其特征在于,在步骤S1中,定义三角形Δabc的顶点坐标
分别为a(x1,y1)、b(x2,y2)、c(x3,y3),监测点为o(x,y),
构建三角形区域方程为:
|x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2|=|x1*y2+x2*y+x*y1-x1
*y-x2*y1-x*y2|+|x1*y+x*y3+x3*y1-x1*y3-x*y1-x3*y|+|x*y2+x2*y3+x
3*y-x*y3-x2*y-x3*y2|。
3.如权利要求1所述的基于三角形区域方程判断点与面拓扑关
系的方法,其特征在于,所述步骤S2具体包括:将监测点的坐标(x,
y)带入三角形区域方程,如果不满足三角形区域方程的等式条件,

\t表明该监测点不在三角形区域内,点与三角形区域呈相离状态;否则,
表明该监测点在三角形区域内或者边界上,然后将监测点分别代入三
角形三条边...

【专利技术属性】
技术研发人员:吴会胜文聪聪蔺丽芳宋冬梅
申请(专利权)人:中国石油大学华东
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1