一种采用折线分割多边形的方法及装置制造方法及图纸

技术编号:38752304 阅读:25 留言:0更新日期:2023-09-09 11:18
本发明专利技术提供一种采用折线分割多边形的方法及装置,属于数据处理技术领域,其中所述方法包括:根据折线的拐点以及多边形的拐点,分别将折线以及多边形拆分成多个线段;对线段对应的事件进行排序得到事件链表,并采用多边形分割算法循环处理事件链表中的事件,得到待选线段以及每一待选线段两侧的标识;根据待选线段两侧的标识,确定有效线段;根据有效线段,构建分割后的多边形。本发明专利技术中的方法,通过采用折线分割多边形,利用多边形分割算法检测线段之间的位置情况,并同时进行线段两侧的状态标记,通过一次扫描即完成线段的相交、重合以及状态的标记,极大地提高了计算效率,多边形越复杂、交点越多,则本发明专利技术的方法效率也将越显著。著。著。

【技术实现步骤摘要】
一种采用折线分割多边形的方法及装置


[0001]本专利技术涉及数据处理
,尤其涉及一种采用折线分割多边形的方法及装置。

技术介绍

[0002]随着地理信息及计算机行业的发展,地图、位置、空间信息等我们日常生活涉及的地理信息相关内容在计算机内能够更加具像的表达出来,从而衍生出更多的空间计算相关的需求和应用。而折线分割多边形在众多空间计算需求中也时常得到应用。
[0003]如果多边形凹凸复杂、分割多边形的折线较多、并且折线存在复杂的自相交关系,现有的分割方法通过构建最小环计算量会大幅度提升从而降低计算效率。

技术实现思路

[0004]有鉴于此,本专利技术提供一种采用折线分割多边形的方法及装置,用于解决目前的多边形分割方法会大幅度提升计算量从而降低计算效率的问题。
[0005]为解决上述技术问题,第一方面,本专利技术提供一种采用折线分割多边形的方法,所述折线将所述多边形分割为至少两部分,该方法包括:
[0006]根据所述折线的拐点以及所述多边形的拐点,分别将所述折线以及所述多边形拆分成多个线段;
[0007]对所述线段对应的事件进行排序得到事件链表,并采用多边形分割算法循环处理所述事件链表中的事件,得到待选线段以及每一所述待选线段两侧的标识,其中,所述线段对应的事件包括:扫描开始事件和扫描结束事件,所述扫描开始事件对应于所述线段的起点,所述扫描结束事件对应于所述线段的终点,所述事件的结构包括所述事件是否对应所属线段的起点、所述事件的点坐标、所述事件所属的线段的结构信息以及所述事件所属线段对应的另一个事件,所述线段的结构信息包括线段的起点、终点以及线段两侧的标识,所述标识用于表征所述线段与所述多边形、所述折线之间的相对位置关系;
[0008]根据所述待选线段两侧的标识,确定有效线段;
[0009]根据所述有效线段,构建分割后的多边形。
[0010]可选的,所述对所述线段对应的事件进行排序得到事件链表,并采用多边形分割算法循环处理所述事件链表中的事件,得到待选线段以及每一所述待选线段两侧的标识包括:
[0011]将所述折线拆分得到的线段所对应的事件进行排序得到折线事件链表,以及将所述多边形拆分得到的线段所对应的事件进行排序得到多边形事件链表;
[0012]采用多边形分割算法循环处理所述折线事件链表中的事件得到第一待选线段以及循环处理所述多边形事件链表中的事件得到第二待选线段,所述第一待选线段两侧标记有相对于所述折线时的标识,所述第二待选线段两侧标记有相对于所述多边形时的标识;
[0013]对所述第一待选线段对应的事件和所述第二待选线段对应的事件进行综合排序
得到组合事件链表;
[0014]采用多边形分割算法循环处理所述组合事件链表中的事件得到第三待选线段,所述第三待选线段两侧标记有相对于所述折线时的标识以及相对于所述多边形时的标识。
[0015]可选的,所述对所述线段对应的事件进行排序得到事件链表包括:
[0016]设置采用扫描线对所述折线以及所述多边形进行扫描时的扫描方向;
[0017]根据所述扫描方向,确定所述扫描线经过各所述线段的端点的先后顺序;
[0018]根据所述先后顺序,对所述线段对应的事件进行排序得到事件链表。
[0019]可选的,所述线段两侧的标识包括所述线段相对于所述折线时所述线段两侧的第一标识以及所述线段相对于所述多边形时所述线段两侧的第二标识;
[0020]所述折线拆分得到的线段相对于所述折线时,所述折线拆分得到的线段两侧的第一标识均标记为填充标识,所述折线拆分得到的线段相对所述多边形时,若所述折线拆分得到的线段位于所述多边形的内部,则所述折线拆分得到的线段两侧的第二标识均标记为填充标识,若所述折线拆分得到的线段位于所述多边形的外部,则所述折线拆分得到的线段两侧的第二标识均标记为不填充标识;
[0021]所述多边形拆分得到的线段相对于所述折线时,所述多边形拆分得到的线段两侧的第一标识均标记为填充标识,所述多边形拆分得到的线段相对所述多边形时,所述多边形拆分得到的线段位于所述多边形内部的一侧的第二标识标记为填充标识,所述多边形拆分得到的线段位于所述多边形外部的一侧的第二标识为不填充标识。
[0022]可选的,所述根据所述待选线段两侧的标识,确定有效线段包括:
[0023]若所述待选线段两侧的标识满足以下任意一者,则将所述待选线段确定为有效线段:
[0024]所述待选线段相对于所述折线时两侧的第一标识均为填充标识,且相对于所述多边形时所述待选线段上方的第二标识为不填充标识,下方的第二标识为填充标识;
[0025]所述待选线段相对于所述折线时两侧的第一标识为填充标识,且相对于所述多边形时所述待选线段上方的第二标识为填充标识,下方的第二标识为不填充标识;
[0026]所述待选线段相对于所述折线时两侧的第一标识为填充标识,且相对于所述多边形时所述待选线段两侧的第二标识均为填充标识。
[0027]可选的,所述采用多边形分割算法循环处理所述事件链表中的事件,得到待选线段以及每一所述待选线段两侧的标识包括:
[0028]创建状态链表,若所述多边形分割算法当前在处理事件为第一线段对应的扫描开始事件,在所述状态链表中添加所述第一线段对应的节点;
[0029]若所述第一线段与第二线段存在交点,根据所述交点,将所述第一线段的扫描开始事件拆分为所述第一线段的最左段的扫描结束事件、所述第二线段的最左段的扫描结束事件、所述第一线段的最右段的扫描开始事件、所述第二线段的最右段的扫描开始事件,其中,所述第二线段在所述状态链表中对应的节点与所述第一线段对应的节点相邻;
[0030]将所述第一线段的最左段的扫描结束事件、所述第二线段的最左段的扫描结束事件、所述第一线段的最右段的扫描开始事件、所述第二线段的最右段的扫描开始事件插入所述事件链表中。
[0031]可选的,所述采用多边形分割算法循环处理所述事件链表中的事件,得到待选线
段以及每一所述待选线段两侧的标识包括:
[0032]创建状态链表,若所述多边形分割算法当前在处理事件为第三线段对应的扫描开始事件,在所述状态链表中添加所述第三线段对应的节点;
[0033]若所述状态链表中所述第三线段对应的节点后没有其他节点,则将所述第三线段上方的标识标记为填充标识,并将所述第三线段下方的标识标记为不填充标识;
[0034]若所述状态链表中所述第三线段对应的节点后有相邻节点,则将所述第三线段上方的标识标记为与所述相邻节点对应的线段的上方的标识相同,并将所述第三线段下方的标识标记为与所述第三线段上方的标识相反,其中,所述填充标识与所述不填充标识互为相反标识。
[0035]可选的,所述创建状态链表,若所述多边形分割算法当前在处理事件为第三线段对应的扫描开始事件,在所述状态链表中添加所述第三线段对应的节点之后,还包括:
[0036]若所述多边形分割算法当前本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种采用折线分割多边形的方法,所述折线将所述多边形分割为至少两部分,其特征在于,所述方法包括:根据所述折线的拐点以及所述多边形的拐点,分别将所述折线以及所述多边形拆分成多个线段;对所述线段对应的事件进行排序得到事件链表,并采用多边形分割算法循环处理所述事件链表中的事件,得到待选线段以及每一所述待选线段两侧的标识,其中,所述线段对应的事件包括:扫描开始事件和扫描结束事件,所述扫描开始事件对应于所述线段的起点,所述扫描结束事件对应于所述线段的终点,所述事件的结构包括所述事件是否对应所属线段的起点、所述事件的点坐标、所述事件所属的线段的结构信息以及所述事件所属线段对应的另一个事件,所述线段的结构信息包括线段的起点、终点以及线段两侧的标识,所述标识用于表征所述线段与所述多边形、所述折线之间的相对位置关系;根据所述待选线段两侧的标识,确定有效线段;根据所述有效线段,构建分割后的多边形。2.根据权利要求1所述的方法,其特征在于,所述对所述线段对应的事件进行排序得到事件链表,并采用多边形分割算法循环处理所述事件链表中的事件,得到待选线段以及每一所述待选线段两侧的标识包括:将所述折线拆分得到的线段所对应的事件进行排序得到折线事件链表,以及将所述多边形拆分得到的线段所对应的事件进行排序得到多边形事件链表;采用多边形分割算法循环处理所述折线事件链表中的事件得到第一待选线段以及循环处理所述多边形事件链表中的事件得到第二待选线段,所述第一待选线段两侧标记有相对于所述折线时的标识,所述第二待选线段两侧标记有相对于所述多边形时的标识;对所述第一待选线段对应的事件和所述第二待选线段对应的事件进行综合排序得到组合事件链表;采用多边形分割算法循环处理所述组合事件链表中的事件得到第三待选线段,所述第三待选线段两侧标记有相对于所述折线时的标识以及相对于所述多边形时的标识。3.根据权利要求2所述的方法,其特征在于,所述对所述线段对应的事件进行排序得到事件链表包括:设置采用扫描线对所述折线以及所述多边形进行扫描时的扫描方向;根据所述扫描方向,确定所述扫描线经过各所述线段的端点的先后顺序;根据所述先后顺序,对所述线段对应的事件进行排序得到事件链表。4.根据权利要求2所述的方法,其特征在于,所述线段两侧的标识包括所述线段相对于所述折线时所述线段两侧的第一标识以及所述线段相对于所述多边形时所述线段两侧的第二标识;所述折线拆分得到的线段相对于所述折线时,所述折线拆分得到的线段两侧的第一标识均标记为填充标识,所述折线拆分得到的线段相对所述多边形时,若所述折线拆分得到的线段位于所述多边形的内部,则所述折线拆分得到的线段两侧的第二标识均标记为填充标识,若所述折线拆分得到的线段位于所述多边形的外部,则所述折线拆分得到的线段两侧的第二标识均标记为不填充标识;所述多边形拆分得到的线段相对于所述折线时,所述多边形拆分得到的线段两侧的第
一标识均标记为填充标识,所述多边形拆分得到的线段相对所述多边形时,所述多边形拆分得到的线段位于所述多边形内部的一侧的第二标识标记为填充标识,所述多边形拆分得到的线段位于所述多边形外部的一侧的第二标识为不填充标识。5.根据权利要求4所述的方法,其特征在于,所述根据所述待选线段两侧的标识,确定有效线段包括:若所述待选线段两侧的标识满足以下任意一者,则将所述待选线段确定为有效线段:所述待选线段相对于所述折线时两侧的第一标识均为填充标识,且相对于所述多边形时所述待选线段上方的第二标识为不填充标识,下方的第二标识为填充标识;所述待选线段相对于所述折线时两侧的第一标识为填充标识,且相对于所述多边形时所述待选线段上方的第二标识为填充标识,下方的第二标识为不填充标识;所述待选线段相对于所述折线时两侧的第一标识为填充标识,且相对于所述多边形时所述待选线段两侧的第二标识均为填充标识。6.根据权利要求1所述的方法,其特征在于,所述采用多边形分割算法循环处理所述事件链表中的事件,得到待选线段以及每一所述待选线段两侧的标识包括:创建状...

【专利技术属性】
技术研发人员:国锋
申请(专利权)人:中移智行网络科技有限公司中国移动通信集团有限公司
类型:发明
国别省市:

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

1