多边形简化方法、装置、设备及计算机可读存储介质转让专利

申请号 : CN202111517255.1

文献号 : CN113920184B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 胡楷模黄舒怀

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本申请提供了一种多边形简化方法、装置、设备及计算机可读存储介质;方法包括:获取待简化多边形的初始拓扑结构信息,并基于初始拓扑结构信息确定至少一个目标简化对象;确定对各个目标简化对象进行简化处理后的面积增加量,并将各个目标简化对象和对应的面积增加量增加至动态优先级队列;依次从动态优先级队列中获取队首的目标简化对象;在确定对目标简化对象进行简化处理后不会改变待简化多边形的拓扑结构,且对目标简化对象进行简化处理后的累积面积增加量小于或者等于面积增量阈值时,对目标简化对象进行简化处理;在确定达到简化结束条件时,获得简化后的多边形。通过本申请,能够在拓扑结构不发生变化的前提下,保证多边形面积非递减。

权利要求 :

1.一种多边形简化方法,其特征在于,所述方法包括:获取待简化多边形的初始拓扑结构信息和面积增量阈值,并基于所述初始拓扑结构信息确定至少一个目标简化对象,所述目标简化对象为内凹顶点或外凸线段;

确定对各个目标简化对象进行简化处理后的面积增加量,并将所述各个目标简化对象和对应的面积增加量增加至动态优先级队列;

从所述动态优先级队列中获取队首的目标简化对象;

在确定对所述目标简化对象进行简化处理后不会改变所述待简化多边形的拓扑结构,且对所述目标简化对象进行简化处理后的累积面积增加量小于或者等于所述面积增量阈值时,对所述目标简化对象进行简化处理,并更新所述动态优先级队列;

在确定达到简化结束条件时,获得简化后的多边形。

2.根据权利要求1中所述的方法,其特征在于,所述基于所述初始拓扑结构信息确定至少一个目标简化对象,包括:

基于所述初始拓扑结构信息获取所述待简化多边形上两两相邻的第一线段和第二线段,所述第一线段的端点为第一顶点和第二顶点,所述第二线段的端点为第二顶点和第三顶点;

当所述第一顶点、所述第二顶点和所述第三顶点形成右转关系时,将所述第二顶点确定为目标简化对象。

3.根据权利要求2中所述的方法,其特征在于,所述确定对各个目标简化对象进行简化处理后的面积增加量,包括:

获取所述目标简化对象、所述第一顶点和所述第三顶点的坐标信息;

基于所述目标简化对象、所述第一顶点和所述第三顶点的坐标信息,确定所述目标简化对象、所述第一顶点和所述第三顶点构成的第一三角形的第一面积;

将所述第一面积确定为对所述第二顶点进行简化处理后的面积增加量。

4.根据权利要求3中所述的方法,其特征在于,所述方法还包括:确定连接所述第一顶点和所述第三顶点得到的第一候选线段是否与所述待简化多边形中除以所述目标简化对象为顶点的线段之外的其它线段相交;

当确定所述第一候选线段与任一其它线段均不相交时,确定对所述目标简化对象进行简化处理后不会改变所述待简化多边形的拓扑结构。

5.根据权利要求4中所述的方法,其特征在于,所述对所述目标简化对象进行简化处理,并更新所述动态优先级队列,包括:将所述第二顶点、所述第一线段和所述第二线段从当前拓扑结构信息中删除,得到删除后的拓扑结构信息;

将所述候选线段增加至所述删除后的拓扑结构信息,得到增加后的拓扑结构信息;

将所述第一顶点和所述第三顶点中存在于所述动态优先级队列的顶点删除;

基于所述增加后的拓扑结构信息确定所述第一顶点和第三顶点中存在新增目标简化对象时,确定所述新增目标简化对象对应的面积增加量;

将所述新增目标简化对象和所述新增目标简化对象对应的面积增加量增加至所述动态优先级队列。

6.根据权利要求2中所述的方法,其特征在于,所述基于所述初始拓扑结构信息确定至少一个目标简化对象,包括:

基于所述初始拓扑结构信息确定三个相邻的第三线段、第四线段和第五线段,其中,所述第三线段的端点为第四顶点和第五顶点,所述第四线段的端点为第五顶点和第六顶点,所述第五线段的端点为第六顶点和第七顶点;

当所述第四顶点、所述第五顶点和所述第六顶点形成左转关系且所述第五顶点、所述第六顶点和所述第七顶点形成左转关系时,确定所述第三线段的延长线和所述第五线段的延长线之间的交点;

当第二候选线段与第三候选线段之间的夹角为钝角时,将所述第四线段确定为目标简化对象,所述第二候选线段是以所述第四顶点和所述交点为端点的线段,所述第三候选线段是以所述交点和所述第七顶点为端点的线段。

7.根据权利要求6中所述的方法,其特征在于,所述确定对各个目标简化对象进行简化处理后的面积增加量,包括:

获取所述交点、所述第五顶点和所述第六顶点的坐标信息;

基于所述交点、所述第五顶点和所述第六顶点的坐标信息,确定所述交点、所述第五顶点和所述第六顶点构成的第二三角形的第二面积;

将所述第二面积确定为对所述第四线段进行简化处理后的面积增加量。

8.根据权利要求6中所述的方法,其特征在于,所述方法还包括:确定所述第二候选线段和所述第三候选线段是否与所述待简化多边形中除所述第四线段之外的其它线段相交;

当确定所述第二候选线段与任一其它线段均不相交且所述第三候选线段与任一其它线段均不相交时,确定对所述目标简化对象进行简化处理后不会改变所述待简化多边形的拓扑结构。

9.根据权利要求6中所述的方法,其特征在于,所述对所述目标简化对象进行简化处理,并更新所述动态优先级队列,包括:将所述第三线段、所述第四线段、所述第五线段、所述第五顶点和所述第六顶点从当前拓扑结构信息中删除,得到删除后的拓扑结构信息;

将所述交点、所述第二候选线段和所述第三候选线段增加至所述删除后的拓扑结构信息,得到增加后的拓扑结构信息;

将所述第四顶点、所述第五顶点、所述第六顶点、所述第七顶点、所述第三线段和所述第五线段中存在于所述动态优先级队列的顶点删除;

基于所述增加后的拓扑结构信息确定所述第四顶点、所述第七顶点、所述交点、所述第二候选线段和所述第三候选线段中存在新增目标简化对象时,确定所述新增目标简化对象对应的面积增加量;

将所述新增目标简化对象和所述新增目标简化对象对应的面积增加量增加至所述动态优先级队列。

10.根据权利要求1至9任一项所述的方法,其特征在于,当所述面积增量阈值为自适应阈值时,所述方法还包括:

获取预设的面积阈值增长步长、目标简化率和迭代次数阈值;

获取待简化多边形的第一顶点总数和所述简化后的多边形的第二顶点总数;

基于所述第一顶点总数和所述第二顶点总数确定实际简化率;

当所述实际简化率大于所述目标简化率且简化处理迭代次数未达到所述迭代次数阈值时,基于所述面积增量阈值和所述面积阈值增长步长确定更新后的面积增量阈值;

基于所述更新后的面积增量阈值再次对所述待简化多边形进行简化处理。

11.根据权利要求10中所述的方法,其特征在于,所述方法还包括:确定所述动态优先级队列为空且面积增量阈值不为自适应阈值时,确定达到简化结束条件;或者,

确定所述累积面积增加量大于所述面积增量阈值且面积增量阈值不为自适应阈值时,确定达到简化结束条件;或者,

确定所述实际简化率小于或者等于所述目标简化率时,确定达到简化结束条件;或者,确定简化处理迭代次数达到预设的迭代次数阈值时,确定达到简化结束条件。

12.一种多边形简化装置,其特征在于,所述装置包括:第一确定模块,用于获取待简化多边形的初始拓扑结构信息和面积增量阈值,并基于所述初始拓扑结构信息确定至少一个目标简化对象,所述目标简化对象为内凹顶点或外凸线段;

第二确定模块,用于确定对各个目标简化对象进行简化处理后的面积增加量,并将所述各个目标简化对象和对应的面积增加量增加至动态优先级队列;

第一获取模块,用于依次从所述动态优先级队列中获取队首的目标简化对象;

第一简化模块,用于在确定对所述目标简化对象进行简化处理后不会改变所述待简化多边形的拓扑结构,且对所述目标简化对象进行简化处理后的累积面积增加量小于或者等于所述面积增量阈值时,对所述目标简化对象进行简化处理,并更新所述动态优先级队列;

第二获取模块,用于在确定达到简化结束条件时,获得简化后的多边形。

13.一种计算机设备,其特征在于,所述计算机设备包括:存储器,用于存储可执行指令;

处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至11任一项所述的方法。

14.一种计算机可读存储介质,存储有可执行指令,其特征在于,所述可执行指令被处理器执行时实现权利要求1至11任一项所述的方法。

说明书 :

多边形简化方法、装置、设备及计算机可读存储介质

技术领域

[0001] 本申请涉及图像处理技术,尤其涉及一种多边形简化方法、装置、设备及计算机可读存储介质。

背景技术

[0002] 多边形模型是计算机图形中最流行、最重要,且得到最广泛支持的模型表示方法。但随着技术的快速发展,图像的多边形模型的复杂性常常超过了系统的处理能力,为此人
们提出了很多简化图像的多边形模型的算法。目前最常用的多边形简化算法是由Dyken等
人在2009年提出的。该方法的基本思想是:不断减少多边形/带孔多边形/折线段中的顶点,
同时保证其拓扑结构不发生变化,并且尽可能保持原始输入的整体形状不发生大的变化,
但是该方法不能保证面积非递减,对于诸如装箱问题等比较耗时且需要保证面积不能递减
的的几何应用问题,相关技术中的多边形简化方法并不适用。

发明内容

[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] 当第二候选线段与第三候选线段之间的夹角为钝角时,将所述第四线段确定为目标简化对象,所述第二候选线段是以所述第四顶点和所述交点为端点的线段,所述第三候
选线段是以所述交点和所述第七顶点为端点的线段。
[0037] 在一些实施例中,第二确定模块,还用于:
[0038] 获取所述交点、所述第五顶点和所述第六顶点的坐标信息;
[0039] 基于所述交点、所述第五顶点和所述第六顶点的坐标信息,确定所述交点、所述第五顶点和所述第六顶点构成的第二三角形的第二面积;
[0040] 将所述第二面积确定为对所述第四线段进行简化处理后的面积增加量。
[0041] 在一些实施例中,该装置还包括:
[0042] 第五确定模块,用于确定所述第二候选线段和所述第三候选线段是否与所述待简化多边形中除所述第四线段之外的其它线段相交;
[0043] 第六确定模块,用于当确定所述第二候选线段与任一其它线段均不相交且所述第三候选线段与任一其它线段均不相交时,确定对所述目标简化对象进行简化处理后不会改
变所述待简化多边形的拓扑结构。
[0044] 在一些实施例中,该第一简化模块,还用于:
[0045] 将所述第三线段、所述第四线段、所述第五线段、所述第五顶点和所述第六顶点从当前拓扑结构信息中删除,得到删除后的拓扑结构信息;
[0046] 将所述交点、所述第二候选线段和所述第三候选线段增加至所述删除后的拓扑结构信息,得到增加后的拓扑结构信息;
[0047] 将所述第四顶点、所述第五顶点、所述第六顶点、所述第七顶点、所述第三线段和所述第五线段中存在于所述动态优先级队列的顶点删除;
[0048] 基于所述增加后的拓扑结构信息确定所述第四顶点、所述第七顶点、所述交点、所述第二候选线段和所述第三候选线段中存在新增目标简化对象时,确定所述新增目标简化
对象对应的面积增加量;
[0049] 将所述新增目标简化对象和所述新增目标简化对象对应的面积增加量增加至所述动态优先级队列。
[0050] 在一些实施例中,该装置还包括:
[0051] 第三获取模块,用于获取预设的面积阈值增长步长和目标简化率;
[0052] 第四获取模块,用于获取待简化多边形的第一顶点总数和所述简化后的多边形的第二顶点总数;
[0053] 第七确定模块,用于基于所述第一顶点总数和所述第二顶点总数确定实际简化率;
[0054] 阈值更新模块,用于当所述实际简化率大于所述目标简化率时,基于所述面积增量阈值和所述面积阈值增长步长确定更新后的面积增量阈值;
[0055] 第二简化模块,用于基于所述更新后的面积增量阈值再次对所述待简化多边形进行简化处理。
[0056] 在一些实施例中,该装置还包括:
[0057] 第八确定模块,用于确定所述动态优先级队列为空且面积增量阈值不为自适应阈值时,确定达到简化结束条件;或者,该装置还包括:
[0058] 第九确定模块,用于确定所述累积面积增加量大于所述面积增量阈值且面积增量阈值不为自适应阈值时,确定达到简化结束条件;或者,该装置还包括:
[0059] 第十确定模块,用于确定所述实际简化率小于或者等于所述目标简化率确定达到简化结束条件;或者,该装置还包括:
[0060] 第十一确定模块,用于确定简化处理迭代次数达到预设的迭代次数阈值时,确定达到简化结束条件。
[0061] 本申请实施例提供一种计算机设备,所述计算机设备包括:
[0062] 存储器,用于存储可执行指令;
[0063] 处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的多边形简化方法。
[0064] 本申请实施例提供一种计算机可读存储介质,存储有可执行指令,所述可执行指令被处理器执行时实现本申请实施例提供的多边形简化方法。
[0065] 本申请实施例提供一种计算机程序产品,包括计算机程序或指令,所述计算机程序或指令被处理器执行时实现本申请实施例提供的多边形简化方法。
[0066] 本申请实施例具有以下有益效果:
[0067] 在需要对待简化多边形进行简化时,首先获取待简化多边形的初始拓扑结构信息和面积增量阈值,并基于所述初始拓扑结构信息确定至少一个目标简化对象,然后计算对
各个目标简化对象进行简化处理后的面积增加量,并将所述各个目标简化对象和对应的面
积增加量增加至动态优先级队列,之后依次从所述动态优先级队列中获取队首的目标简化
对象;在确定对所述目标简化对象进行简化处理后不会改变所述待简化多边形的拓扑结
构,且对所述目标简化对象进行简化处理后的累积面积增加量小于或者等于所述面积增量
阈值时,对所述目标简化对象进行简化处理,并更新所述动态优先级队列,在确定未达到简
化结束条件时,继续从动态优先级队列中取出队首的目标简化对象,直至达到简化结束条
件,便可以获得简化后的多边形,由于在对待简化多边形进行简化之前,需要保证对目标简
化对象进行简化处理后拓扑结构不变,并且对目标简化对象进行简化处理后,不会缩小多
边形的面积,因此简化后的多边形几何形状的改变显示可控,并且面积是非递减的。

附图说明

[0068] 图1为本申请实施例提供的游戏系统100的网络架构示意图;
[0069] 图2是本申请实施例提供的服务器400的结构示意图;
[0070] 图3为本申请实施例提供的多边形简化方法的一种流程示意图;
[0071] 图4为本申请实施例提供的多边形简化方法的另一种实现流程示意图;
[0072] 图5为本申请实施例提供的多边形简化方法的再一种实现流程示意图;
[0073] 图6A为本申请实施例提供的多边形简化方法的逻辑思路示意图;
[0074] 图6B为本申请实施例提供的多边形简化方法的又一逻辑思路示意图;
[0075] 图7A为本申请实施例提供的删除内凹顶点时计算面积增加量的示意图;
[0076] 图7B为本申请实施例提供的删除外凸线段时计算面积增加量的示意图;
[0077] 图8为本申请实施例提供的需要自适应阈值的树叶状多边形示意图。

具体实施方式

[0078] 为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有
做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
[0079] 在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突
的情况下相互结合。
[0080] 在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定
的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的
顺序实施。
[0081] 除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,
不是旨在限制本申请。
[0082] 对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
[0083] 1)多边形(Polygon),由三条或者三条以上的有向线段首尾顺次连接所组成的封闭平面图形。一般约定有向线段的右侧为其内部,左侧为其外部。因此,有限面积的多边形
顶点一般呈逆时针方向排列。
[0084] 2)带孔多边形(Polygon with holes),由一个外边界(由逆时针排列的多边形构成)和若干个包含在外边界内部的孔洞(由顶点顺时针排列的多边形构成)构成。
[0085] 3)折线段(Polylines),由若干条线段首尾顺次连接所组成的不封闭平面图形。
[0086] 4)包围盒(Bounding Box)(二维),由二维几何体中的所有元素的坐标范围所确定的矩形。该包围盒是所有和坐标轴平行或者垂直的的矩形中,能够恰好包住该二维几何体
的最小矩形。
[0087] 5)紧致包围盒(Optimal Bounding Box)(二维),在所有可以包住二维几何体的矩形中面积最小的矩形。紧致包围盒有可能等同于包围盒,也可能比包围盒面积更小。
[0088] 6)临界多边形(NFP,No Fit Polygon),是指一个多边形沿着另外一个多边形的内壁进行滑动时,其边界上的某个参考点的轨迹所形成的多边形。NFP实际定义了对该多边形
进行装箱时,该参考点被放置的可行区域。
[0089] 7)闵可夫斯基和(Minkowski Sum),给定向量集合A和B,定义它们的闵可夫斯基和为 。
[0090] 8)AABB树(Axes Aligned Bounding Box Tree),一种基于K‑d树原理实现的空间搜索树,其每个节点代表一个三维几何图元的空间包围盒。该数据结构可以快速报告查询
图元是否与树中的图元相交,以及具体的相交类型,相交位置等。
[0091] 9)UV岛(UV Island),是指在对三维模型进行展开之后,UV坐标在二维空间里形成的闭合且孤立的多边形或者带孔多边形。
[0092] 10)装箱问题(Packing Problem),是指将多个UV岛紧致地排列在纹理空间内,并使得纹理空间的利用率尽可能高的过程。
[0093] 11)内凹顶点(Concave Vertex),对于多边形上的相邻线段(p,q)和(q,r),如果顶点(p,q,r)形成了右转关系(right turn),则定义q为内凹顶点。
[0094] 12)外凸线段(Convex Segment),对于多边形上的相邻线段(p,q)、(q,r)和(r,s)如果(p,q,r)和(q,r,s)均形成了左转关系(left turn),那么定义线段(q,r)为外凸线段。
[0095] 对于诸如装箱问题等比较耗时的几何应用而言,一方面需要对多边形/带孔多边形进行适当简化,以提高数据规模较大时后续算法的运行效率,另一方面也需要保证简化
结果的面积非递减特征(维持原有面积或者面积适度增加),从而保证后续算法结果的正确
性。基于此,本申请实施例提供一种针对多边形/带孔多边形的简化算法,并且简化结果具
有如下三个特征:1)拓扑结构不发生变化;2)几何形状的改变显示可控;3)保证面积非递
减。
[0096] 本申请实施例提供的设备可以实施为笔记本电脑,平板电脑,台式计算机,机顶盒,移动设备(例如,移动电话,便携式音乐播放器,个人数字助理,专用消息设备,便携式游
戏设备)等各种类型的用户终端,也可以实施为服务器。下面,将说明设备实施服务器时示
例性应用。
[0097] 参见图1,图1是本申请实施例提供的游戏系统100的架构示意图,在如图1所示,该游戏系统包括终端200、网络300和服务器400,其中,终端200通过网络300连接服务器400,
网络300可以是广域网或者局域网,又或者是二者的组合。
[0098] 在游戏启动之前,服务器400会对游戏的3D虚拟场景进行剖分,得到二维的场景多边形图形,然后将该场景多边形图形确定为待简化多边形,进而获取该待简化多边形的初
始拓扑结构信息,并确定多个目标简化对象,目标简化对象至少包括内凹顶点,在一些实施
例中还可以包括外凸线段,之后计算对目标简化对象进行简化处理后的面积增加量,并将
面积增加量和目标简化对象存储至动态优先级队列中,在进行多边形优化时,依次从动态
优先级队列中取出队首的目标简化对象,在确定对目标简化对象进行简化处理之后不会改
变待简化多边形的拓扑结构,且累加面积增加量未超过面积增量阈值时,对该目标简化对
象进行简化处理,直至达到简化结束条件,得到简化后的多边形。在终端200启动游戏对局,
在游戏对局过程中,向服务器400发送游戏对局数据,服务器400可以基于游戏对局数据和
简化后的多边形进行碰撞检测,以确定是否击中敌方虚拟对象,或者碰撞到建筑物,能够提
高游戏数据的处理效率。
[0099] 需要说明的是,在图1中仅仅是以游戏场景为例说明本申请实施例提供的多边形简化方法的应用场景,该多边形简化方法可以应用于任何需要保证拓扑结构不变且面积非
递减的多边形简化场景。
[0100] 在一些实施例中,服务器400可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存
储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台
等基础云计算服务的云服务器。终端200可以是智能手机、平板电脑、笔记本电脑、台式计算
机、智能音箱、智能手表、智能电视、智能车载终端等,但并不局限于此。终端以及服务器可
以通过有线或无线通信方式进行直接或间接地连接,本申请实施例中不做限制。
[0101] 参见图2,图2是本申请实施例提供的服务器400的结构示意图,图2所示的服务器400包括:至少一个处理器410、至少一个网络接口420、总线系统430和存储器440。服务器
400中的各个组件通过总线系统430耦合在一起。可理解,总线系统430用于实现这些组件之
间的连接通信。总线系统430除包括数据总线之外,还包括电源总线、控制总线和状态信号
总线。但是为了清楚说明起见,在图3中将各种总线都标为总线系统430。
[0102] 处理器410可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其它可编程逻辑器件、分立门或者
晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理
器等。
[0103] 存储器440可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器440可选地包括在物理位置上远离处理器410的一
个或多个存储设备。
[0104] 存储器440包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可
以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器440旨在
包括任意适合类型的存储器。
[0105] 在一些实施例中,存储器440能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
[0106] 操作系统441,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
[0107] 网络通信模块442,用于经由一个或多个(有线或无线)网络接口420到达其它计算设备,示例性的网络接口420包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,
Universal Serial Bus)等;
[0108] 在一些实施例中,本申请实施例提供的装置可以采用软件方式实现,图2示出了存储在存储器440中的多边形简化装置443,其可以是程序和插件等形式的软件,包括以下软
件模块:第一确定模块4431、第二确定模块4432、第一获取模块4433、第一简化模块4434和
第二获取模块4435,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或
进一步拆分。将在下文中说明各个模块的功能。
[0109] 在另一些实施例中,本申请实施例提供的装置可以采用硬件方式实现,作为示例,本申请实施例提供的装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申
请实施例提供的多边形简化方法,例如,硬件译码处理器形式的处理器可以采用一个或多
个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻
辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex 
Programmable Logic Device)、现场可编程门阵列(FPGA,Field‑Programmable Gate 
Array)或其它电子元件。
[0110] 将结合本申请实施例提供的服务器的示例性应用和实施,说明本申请实施例提供的多边形简化方法,本申请实施例提供的多边形简化方法可以应用于计算机设备,该计算
机设备可以是终端,还可以是服务器,在本申请实施例中,以计算机设备为服务器为例进行
说明。
[0111] 参见图3,图3为本申请实施例提供的多边形简化方法一种实现流程示意图,将结合图3对本申请实施例提供的多边形简化方法进行说明。
[0112] 步骤S101,获取待简化多边形的初始拓扑结构信息和面积增量阈值,并基于所述初始拓扑结构信息确定至少一个目标简化对象。
[0113] 多边形是指由三条或三条以上(在《几何原本》中定义为四条以上)的线段首尾顺次连接所组成的平面图形。待简化多边形可以是将3D场景图进行剖分得到的二维多边形,
还可以本身就是二维多边形。该待简化多边形可以是不带岛的多边形,还可以是带岛的多
边形。其中,当一个多边形包含有一个或多个多边形时,被包含的多边形称为岛、内岛或者
内多边形,包含其它多边形的多边形可以称为外多边形,外多边形和岛构成的多边形称为
带岛的多边形。当一个多边形内未包含有其它多边形,那么该多边形称为不带岛的多边形。
[0114] 初始拓扑结构信息包括待简化多边形的各个顶点的标识、坐标以及各个顶点之间的连接关系。面积增量阈值可以是固定阈值,也可以是可变化的自适应阈值。目标简化对象
可以是内凹顶点,还可以是外凸线段。
[0115] 当待简化多边形为不带岛多边形时,基于所述初始拓扑结构信息确定至少一个目标简化对象,在实现时,确定的是多边形边界上的内凹顶点或外凸线段;当待简化多边形为
带岛多边形时,基于所述初始拓扑结构信息确定至少一个目标简化对象,在实现时,确定的
是多边形边界和岛边界上的内凹顶点或外凸线段。
[0116] 步骤S102,确定对各个目标简化对象进行简化处理后的面积增加量,并将所述各个目标简化对象和对应的面积增加量增加至动态优先级队列。
[0117] 在本申请实施例中,对于内凹顶点来说,对其进行简化处理时,是将内凹顶点和以内凹顶点为端点的线段删除,并且连接与内凹顶点相邻的两个顶点。以图6A为例进行说明,
顶点q为内凹顶点,在对顶点q进行简化处理时,是将内凹顶点q、线段(p,q)和线段(q,r)删
除,连接顶点p和顶点r,通过图6A可以看出,对内凹顶点进行简化处理后,多边形的面积是
增加的,并且在确定对内凹顶点进行简化处理后的面积增加量时,是将内凹顶点和与其相
邻的两个顶点构成的三角形面积确定为面积增加量,也即△pqr的面积。
[0118] 在对外凸线段进行简化处理时,是将外凸线段的两个相邻线段延长至相交,将外凸线段和外凸线段的两个端点删除。以图6B为例进行说明,线段(B,C)为外凸线段,延长线
段(A,B)和线段(D,C)相交与E,将线段(B,C)和顶点B、顶点C删除。由图6B也可以看出,对外
凸线段(B,C)进行简化处理后多边形的面积也是增加的,简化外凸线段(B,C)之后的面积增
量也即△BEC的面积。
[0119] 在确定出各个目标简化对象对应的面积增加量之后,将各个目标简化对象和各个目标简化对象对应的面积增加量加入动态优先级队列中,其中面积增加量为关键字,目标
简化对象为值,在将各个目标简化对象和各个目标简化对象对应的面积增加量加入动态优
先级队列后,动态优先级队列会按照从小到大的递增顺序对各个面积增加量进行排序。
[0120] 步骤S103,从所述动态优先级队列中获取队首的目标简化对象。
[0121] 由于动态优先级队列中的元素是按从小到到的顺序排列的,因此每次取出的是队列中面积增加量最小的目标简化对象。需要说明的是,从动态优先级队列中取出队首的目
标简化对象,是将队首的目标简化对象和该目标简化对象对应的面积增加量一并取出。
[0122] 步骤S104,在确定对所述目标简化对象进行简化处理后不会改变所述待简化多边形的拓扑结构,且对所述目标简化对象进行简化处理后的累积面积增加量小于或者等于所
述面积增量阈值时,对所述目标简化对象进行简化处理,并更新所述动态优先级队列。
[0123] 在步骤S104之前,需要预测对目标简化对象进行简化处理后是否会改变待简化多边形的拓扑结构,在实现时,可以是判断新增的线段是否与待简化多边形中的其它线段相
交,如果新增的线段与其它线段相交,则确定会改变待简化多边形的拓扑结构,此时返回步
骤S103;如果新增的线段与其它线段均不相交,即确定不会改变待简化多边形的拓扑结构,
此时继续判断对目标简化对象进行简化处理后的累积面积增加量是否小于或者等于面积
增量阈值,其中如果累积面积增加量小于或者等于面积增量阈值,对目标简化对象简化处
理,并更新动态优先级队列;如果累积面积增加量大于面积增量阈值,且面积增量阈值为固
定阈值,则确定达到简化结束条件,执行步骤S105。
[0124] 步骤S105,在确定达到简化结束条件时,获得简化后的多边形。
[0125] 在本申请实施例中,确定是否达到简化结束条件基于面积增量阈值是否为自适应阈值而有所不同,其中,当面积增量阈值不为自适应阈值时,简化结束条件为动态优先级队
列为空,或者累积面积增量大于或者等于面积增量阈值;当面积增量阈值为自适应阈值时,
简化结束条件为实际简化率小于目标简化率,或者简化处理迭代次数达到迭代次数阈值。
[0126] 无论是何种简化结束条件,在达到简化结束条件时,都能保证简化后的多边形的拓扑结构不变,几何形状变化可控,且面积非递减。
[0127] 在本申请实施例提供的多边形简化方法中,首先获取待简化多边形的初始拓扑结构信息和面积增量阈值,并基于所述初始拓扑结构信息确定至少一个目标简化对象,然后
计算对各个目标简化对象进行简化处理后的面积增加量,并将所述各个目标简化对象和对
应的面积增加量增加至动态优先级队列,之后依次从所述动态优先级队列中获取队首的目
标简化对象;在确定对所述目标简化对象进行简化处理后不会改变所述待简化多边形的拓
扑结构,且对所述目标简化对象进行简化处理后的累积面积增加量小于或者等于所述面积
增量阈值时,对所述目标简化对象进行简化处理,并更新所述动态优先级队列,在确定未达
到简化结束条件时,继续从动态优先级队列中取出队首的目标简化对象,直至达到简化结
束条件,便可以获得简化后的多边形,由于在对待简化多边形进行简化之前,需要保证对目
标简化对象进行简化处理后拓扑结构不变,并且对目标简化对象进行简化处理后,不会缩
小多边形的面积,因此简化后的多边形几何形状的改变显示可控,并且面积是非递减的。
[0128] 在实际实现过程中,为了提高简化处理效率,目标简化对象可以仅包括内凹顶点,而为了提高简化效果,目标简化对象可以包括内凹顶点和外凸线段。以下对两种情况分别
进行说明。
[0129] 当目标简化对象仅包括内凹顶点时,上述步骤S101中的“基于所述初始拓扑结构信息确定至少一个目标简化对象”可以通过以下步骤实现:
[0130] 步骤S1011,基于所述初始拓扑结构信息获取所述待简化多边形上两两相邻的第一线段和第二线段。
[0131] 所述第一线段的端点为第一顶点和第二顶点,所述第二线段的端点为第二顶点和第三顶点,也即第一线段和第二线段具有共同的端点—第二顶点。
[0132] 步骤S1012,确定所述第一顶点、第二顶点和第三顶点是否形成右转关系。
[0133] 该步骤在实现时,可以基于第一顶点的坐标和第三顶点的坐标,确定出第一顶点和第三顶点的直线方程,然后基于第二顶点的坐标和该直线方程,确定第一顶点、第二顶点
和第三顶点是否形成右转关系。在实现时,按照第一顶点和第三顶点之间的旋转方向,如果
第二顶点在该直线方程对应直线的左边,确定第一顶点、第二顶点和第三顶点为右转关系。
以图6A为例,第一顶点r、第二顶点q和第三顶点p为多边形边界上的三个顶点,多边形边界
上的顶点为逆时针顺序,因此按照逆时针顺序,第二顶点q在直线rp的左边,所以第一顶点
r、第二顶点q和第三顶点p形成了右转关系,第二顶点q为内凹顶点,此时进入步骤S1043。如
果第一顶点、第二顶点和第三顶点形成了左转关系,则继续判断多边形上的两两相邻线段。
[0134] 步骤S1013,当确定所述第一顶点、所述第二顶点和所述第三顶点形成右转关系时,将所述第二顶点确定为目标简化对象。
[0135] 当确定所述第一顶点、所述第二顶点和所述第三顶点形成右转关系时,说明第二顶点为内凹顶点,此时第二顶点确定为目标简化对象。
[0136] 在上述步骤S1011至步骤S1013所在的实施例中,将内凹顶点确定为目标简化对象,由于对内凹顶点进行简化处理时,不会缩小多边形的面积,从而保证多边形简化的面积
非递减性。
[0137] 承接于上述步骤S1011至步骤S1013,上述步骤S102中的“确定对各个目标简化对象进行简化处理后的面积增加量”,可以通过下述的步骤S1021A至步骤S1023A实现:
[0138] 步骤S1021A,获取所述目标简化对象、所述第一顶点和所述第三顶点的坐标信息。
[0139] 步骤S1022A,基于所述目标简化对象、所述第一顶点和所述第三顶点的坐标信息,确定所述目标简化对象、所述第一顶点和所述第三顶点构成的第一三角形的第一面积。
[0140] 该步骤在实现时,可以基于第一顶点的坐标信息和第二顶点的坐标信息确定第一顶点和第三顶点之间的距离,然后利用目标简化对象的坐标信息和步骤S1012确定出的直
线方程,确定目标简化对象到第一顶点和第三顶点所在直线的垂直距离,从而基于第一顶
点和第三顶点之间的距离和该垂直距离,确定出第一三角形的第一面积。
[0141] 步骤S1023A,将所述第一面积确定为对所述第二顶点进行简化处理后的面积增加量。
[0142] 由于在一些实施例中,当目标简化对象是内凹顶点时,对该内凹顶点进行简化处理时是将内凹顶点以及以内凹顶点为端点的两条线段删除,并连接内凹顶点相邻的两个顶
点,因此对该内凹顶点进行目标简化处理之后,面积增加量为该内凹顶点以及该内凹顶点
的两个相邻顶点所构成的三角形。基于此,在上述步骤S1021A至步骤S1023A中,基于确定出
的目标简化对象(内凹顶点)、以及目标对象相邻的第一顶点和第三顶点的坐标信息确定出
这三个顶点构成的第一三角形的第一面积,并将该第一面积确定为该目标简化对象对应的
面积增加量,能够保证面积增加量的准确性,还能够保证多边形的面积是增加的。
[0143] 在一些实施例中,在步骤S104之前,如图4所示,可以通过以下步骤确定对该目标简化对象进行简化处理是否会改变待简化多边形的拓扑结构以及累积面积增加量是否小
于面积增量阈值:
[0144] 步骤S301,确定连接所述第一顶点和所述第三顶点得到的第一候选线段是否与所述待简化多边形中除以所述目标简化对象为顶点的线段之外的其它线段相交。
[0145] 该步骤在实现时,可以是将步骤S1012中确定为第一候选线段的直线方程,然后在基于待简化多边形中其它线段的两个端点,确定每个其它线段对应的直线方程,再分别求
解第一候选线段对应的直线方程和每个其它线段对应的直线方程所构成的二元一次方程,
如果任一个二元一次方程均无解,说明不存在与第一候选线段相交的其它线段,此时进入
步骤S302。
[0146] 在一些实施例中,如果存在至少一个二元一次方程有解,说明存在至少一个其它线段与第一候选线段相交,此时不对该目标简化对象进行简化处理,转入步骤S103。
[0147] 步骤S302,确定对所述目标简化对象进行简化处理后不会改变所述待简化多边形的拓扑结构。
[0148] 步骤S303,获取对该目标简化对象进行简化处理之前的当前累加面积增加量和该目标简化对象对应的面积增加量。
[0149] 步骤S304,将当前累加面积增加量加上该目标简化对象对应的面积增加量,得到对该目标简化对象进行简化处理后的累积面积增加量。
[0150] 步骤S305,判断累积面积增加量是否小于或者等于面积增量阈值。
[0151] 如果累积面积增加量小于或者等于面积增量阈值时,说明还可以继续进行简化处理,此时进入步骤S104;如果累积面积增加量大于面积增量阈值,说明不能再继续进行简化
处理,此时进入步骤S105,确定达到简化结束条件时,获得简化后的多边形。
[0152] 通过上述步骤S301至步骤S305示出了当目标简化对象为内凹顶点时,确定对目标简化对象进行简化处理后是否会改变待简化多边形的拓扑结构以及确定累积面积增加量
是否小于面积增量阈值的实现方式,从而能够保证利用本申请实施例提供的多边形简化方
法进行简化处理时,不仅不会改变待简化多边形的拓扑结构,还能够保证多边形的面积是
递增的。
[0153] 当目标简化对象为内凹顶点时,上述步骤S104中的“对所述目标简化对象进行简化处理,并更新所述动态优先级队列”可以通过以下步骤实现:
[0154] 步骤S1041A,将所述第二顶点、所述第一线段和所述第二线段从当前拓扑结构信息中删除,得到删除后的拓扑结构信息。
[0155] 如果该第二顶点为第一个进行简化处理的目标简化对象,那么此时当前拓扑结构信息为初始拓扑结构信息;如果第二顶点不为第一进行简化处理的目标简化对象,那么当
前拓扑结构信息不为初始拓扑结构信息,而是上一次简化处理后得到的拓扑结构信息。
[0156] 步骤S1042A,将所述候选线段增加至所述删除后的拓扑结构信息,得到增加后的拓扑结构信息。
[0157] 在实际实现时,通过步骤S1041A至步骤S1042A即完成了对目标简化对象的简化处理,此时得到的增加后的拓扑结构信息,也即对下一个目标简化对象进行简化处理对应的
当前拓扑结构信息。
[0158] 步骤S1043A,将所述第一顶点和所述第三顶点中存在于所述动态优先级队列的顶点删除。
[0159] 这里,将第一顶点和第三顶点中存在与动态优先级队列中的顶点删除,也即将该顶点和该顶点对应的面积增加量一并删除。
[0160] 步骤S1044A,基于所述增加后的拓扑结构信息确定所述第一顶点和第三顶点中存在新增目标简化对象时,确定所述新增目标简化对象对应的面积增加量。
[0161] 该步骤在实现时,可以通过增加后的拓扑结构信息分别判断第一顶点和第三顶点是否为内凹顶点,并将第一顶点和第三顶点中是内凹顶点的顶点确定为新增目标简化对
象,并确定新增目标简化对象对应的面积增加量。
[0162] 步骤S1045A,将所述新增目标简化对象和所述新增目标简化对象对应的面积增加量增加至所述动态优先级队列。
[0163] 在本申请实施例中,将新增目标简化对象和新增目标简化对象对应的面积增加量增加至动态优先级队列之后,动态优先级队列会自动将队列中的元素按照从小到大的递增
顺序进行排列,从而得到更新后的动态优先级队列,实现动态优先级队列的自动更新,提高
多边形简化处理的效率。
[0164] 当目标简化对象不仅包括内凹顶点,还包括外凸线段时,上述步骤S101中的“基于所述初始拓扑结构信息确定至少一个目标简化对象”在实现时,除了上述步骤S1011至步骤
S1013,还可以通过下述的步骤S1014和步骤S1016所述,包括:
[0165] 步骤S1014,基于所述初始拓扑结构信息确定三个相邻的第三线段、第四线段和第五线段。
[0166] 其中,所述第三线段的端点为第四顶点和第五顶点,所述第四线段的端点为第五顶点和第六顶点,所述第五线段的端点为第六顶点和第七顶点,也即第三线段和第四线段
具有共同端点(第五顶点)、第四线段和第五线段具有共同端点(第六顶点)。
[0167] 步骤S1015,当所述第四顶点、所述第五顶点和所述第六顶点形成左转关系且所述第五顶点、所述第六顶点和所述第七顶点形成左转关系时,确定所述第三线段的延长线和
所述第五线段的延长线之间的交点。
[0168] 该步骤在实现时,可以基于第四顶点的坐标和第六顶点的坐标,确定出第四顶点和第六顶点的直线方程,然后基于第五顶点的坐标和该直线方程,确定第四顶点、第五顶点
和第六顶点是否形成右转关系。在实现时,按照第四顶点和第六顶点之间的旋转方向,如果
第五顶点在该直线方程对应直线的右边,确定第四顶点、第五顶点和第六顶点为左转关系。
以图6B为例,第四顶点A、第五顶点B和第六顶点C为多边形边界上的三个顶点,多边形边界
上的顶点为逆时针顺序,因此按照逆时针顺序,第五顶点B在直线AC的右边,所以第四顶点
A、第五顶点B和第六顶点C形成了左转关系,同理,可以得出第五顶点B、第六顶点C和第七顶
点D也形成了左转关系,此时确定第四线段为外凸线段,那么接下来确定第三线段AB和第五
线段DC延长线的交点E。
[0169] 步骤S1016,当第二候选线段与第三候选线段之间的夹角为钝角时,将所述第四线段确定为目标简化对象。
[0170] 其中,第二候选线段是以所述第四顶点和所述交点为端点的线段,所述第三候选线段是以所述交点和所述第七顶点为端点的线段。以图6B为例,第二候选线段为BE,第三候
选线段为CE,第二候选线段与第三候选线段之间的夹角为∠BEC,由于∠BEC为钝角,因此第
四线段BC为目标简化对象。在图6B中的内岛多边形中,∠HFG为两个候选线段之间的夹角,
由于∠HFG为锐角,因此此时并不将线段(H,G)确定为目标简化对象。
[0171] 在一些实施例中,也可以是在确定所述第四顶点、所述第五顶点和所述第六顶点形成左转关系且所述第五顶点、所述第六顶点和所述第七顶点形成左转关系时即将第四线
段确定为目标简化对象。在本申请实施例中,为了防止外凸线段被简化之后形成尖点,从而
导致原始带孔多边形的包围盒增大过多,因此只有当第二候选线段和第三候选线段之间的
夹角为钝角时,才将第四线段确定为目标简化对象,从而能够保证对该目标简化对象进行
简化处理后的面积增加量不会过大。
[0172] 当目标简化对象为通过上述步骤S1014至步骤S1016确定出的外凸线段时,上述步骤S102中的“确定对各个目标简化对象进行简化处理后的面积增加量”可以通过以下步骤
S1021B至步骤S1023B实现:
[0173] 步骤S1021B,获取所述交点、所述第五顶点和所述第六顶点的坐标信息。
[0174] 步骤S1022B,基于所述交点、所述第五顶点和所述第六顶点的坐标信息,确定所述交点、所述第五顶点和所述第六顶点构成的第二三角形的第二面积。
[0175] 步骤S1022B的实现方式与上述步骤S1022A的实现方式是类似的,在实际应用时,可参考步骤S1022A的实现过程。
[0176] 步骤S1023B,将所述第二面积确定为对所述第四线段进行简化处理后的面积增加量。
[0177] 当目标简化对象为通过上述步骤S1014至步骤S1016确定出的外凸线段时,在步骤S104之前,需要通过以下步骤确定对所述目标简化对象进行简化处理后不会改变所述待简
化多边形的拓扑结构:
[0178] 步骤S401,确定所述第二候选线段和所述第三候选线段是否与所述待简化多边形中除所述第四线段之外的其它线段相交。
[0179] 确定第二候选线段是否与其它线段相交以及确定第三候选线段是否与其它线段相交的实现过程与步骤S301的实现过程是类似的,在实际应用过程中可以参考步骤S301的
实现过程。
[0180] 步骤S402,当确定所述第二候选线段与任一其它线段均不相交且所述第三候选线段与任一其它线段均不相交时,确定对所述目标简化对象进行简化处理后不会改变所述待
简化多边形的拓扑结构。
[0181] 在步骤S402之后可以通过上述步骤S303至步骤S305确定对该目标简化对象进行简化处理后的累积面积增加量是否小于或者等于面积增量阈值,当累积面积增加量小于或
者等于面积增量阈值时,进入步骤S104;如果累积面积增加量大于面积增益阈值,此时进入
步骤S105。
[0182] 通过上述步骤示出了当目标简化对象为外凸线段时,确定对目标简化对象进行简化处理后是否会改变待简化多边形的拓扑结构以及确定累积面积增加量是否小于面积增
量阈值的实现方式,从而能够保证利用本申请实施例提供的多边形简化方法进行简化处理
时,不仅不会改变待简化多边形的拓扑结构,还能够保证多边形的面积是递增的。
[0183] 当目标简化对象为通过上述步骤S1014至步骤S1016确定出的外凸线段时,上述步骤S104中的“对所述目标简化对象进行简化处理,并更新所述动态优先级队列”可以通过下
述步骤S1041B至步骤S1045B实现:
[0184] 步骤S1041B,将所述第三线段、所述第四线段、所述第五线段、所述第五顶点和所述第六顶点从当前拓扑结构信息中删除,得到删除后的拓扑结构信息。
[0185] 步骤S1042B,将所述交点、所述第二候选线段和所述第三候选线段增加至所述删除后的拓扑结构信息,得到增加后的拓扑结构信息。
[0186] 通过步骤S1041B至步骤S1042B也即完成了对目标简化对象(第四线段)的简化处理,此时得到的增加后的拓扑结构信息,也就是对下一个目标简化对象进行简化处理对应
的当前拓扑结构信息。
[0187] 步骤S1043B,将所述第四顶点、所述第五顶点、所述第六顶点、所述第七顶点、所述第三线段和所述第五线段中存在于所述动态优先级队列的顶点删除。
[0188] 步骤S1044B,基于所述增加后的拓扑结构信息确定所述第四顶点、所述第七顶点、所述交点、所述第二候选线段和所述第三候选线段中存在新增目标简化对象时,确定所述
新增目标简化对象对应的面积增加量。
[0189] 由于在增加后的拓扑结构信息中,已经删除了第三线段、第四线段、第五线段、第五顶点和第七顶点,增加了第二候选线段和第三候选线段,因此在该步骤中,需要基于增加
后的拓扑结构信息确定第四顶点、所述第七顶点、所述交点、所述第二候选线段和所述第三
候选线段中是否存在新增目标对象,也即确定第四顶点、第七顶点和交点是否为内凹顶点,
确定第二候选线段和第三候选线段是否为外凸线段且延长线夹角为钝角。如果存在新增目
标简化对象,确定新增目标简化对象对应的面积增加量。
[0190] 步骤S1045B,将所述新增目标简化对象和所述新增目标简化对象对应的面积增加量增加至所述动态优先级队列。
[0191] 在本申请实施例中,将新增目标简化对象和新增目标简化对象对应的面积增加量增加至动态优先级队列之后,动态优先级队列会自动将队列中的元素按照从小到大的递增
顺序进行排列,从而得到更新后的动态优先级队列,能够实现动态优先级队列的自动更新,
提高多边形简化处理的效率。
[0192] 基于前述的实施例,本申请实施例再提供一种多边形简化方法,图5为本申请实施例提供的多边形简化方法的再一种实现流程示意图,如图5所示,该流程包括:
[0193] 步骤S501,获取待简化多边形的初始拓扑结构信息和面积增量阈值,并基于所述初始拓扑结构信息确定至少一个目标简化对象。
[0194] 步骤S502,确定对各个目标简化对象进行简化处理后的面积增加量,并将所述各个目标简化对象和对应的面积增加量增加至动态优先级队列。
[0195] 上述步骤S501至步骤S502的实现方式与步骤S101至步骤S102的实现方式是类似的,可以参照步骤S101至步骤S102的实现方式实现。
[0196] 步骤S503,确定该动态优先级队列是否为空。
[0197] 其中,如果动态优先级队列为空,进入步骤S510,进一步判断面积增量阈值是否为自适应阈值;如果动态优先级队列不为空,进入步骤S504。
[0198] 步骤S504,从所述动态优先级队列中获取队首的目标简化对象。
[0199] 步骤S505,确定对该目标简化对象进行简化处理后是否会改变该待简化多边形的拓扑结构。
[0200] 其中,该目标简化对象为内凹顶点时,通过步骤S301至步骤S302确定对该目标简化对象进行简化处理后会不会改变待简化多边形的拓扑结构,当该目标简化对象为外凸线
段时,通过步骤S401至步骤S402确定对该目标简化对象进行简化处理后会不会改变待简化
多边形的拓扑结构。其中当确定对该目标简化对象进行简化处理后会改变该待简化多边形
的拓扑结构,转入步骤S503;当确定对目标简化对象进行简化处理后不会改变待简化多边
形的拓扑结构时,进入步骤S506。
[0201] 步骤S506,获取对该目标简化对象进行简化处理之前的当前累加面积增加量和该目标简化对象对应的面积增加量。
[0202] 步骤S507,将当前累加面积增加量加上该目标简化对象对应的面积增加量,得到对该目标简化对象进行简化处理后的累积面积增加量。
[0203] 步骤S508,判断累积面积增加量是否小于面积增量阈值。
[0204] 这里,判断的是对该目标简化对象进行简化处理后的累积面积增加量是否小于面积增量阈值,确定对该目标简化对象进行简化处理后的累积面积增加量小于面积增量阈值
时,进入步骤S509,确定对该目标简化对象进行简化处理后的累积面积增加量大于或者等
于面积增量阈值时,进入步骤S510。
[0205] 步骤S509,对所述目标简化对象进行简化处理,并更新所述动态优先级队列。
[0206] 当目标简化对象为内凹顶点时,该步骤可以通过步骤S1041A至步骤S1045A实现;当目标简化对象为外凸线段时,该步骤可以通过步骤S1041B至步骤S1045B实现。
[0207] 在步骤S509之后,转入步骤S503。
[0208] 步骤S510,确定该面积增量阈值是否为自适应阈值。
[0209] 如果该面积增量阈值为自适应阈值,确定未达到简化结束条件,此时进入步骤S511,如果该面积增量阈值不为自适应阈值,确定达到简化结束条件,此时进入步骤S517。
[0210] 步骤S511,将简化处理迭代次数加1,并获取预设的面积阈值增长步长、目标简化率和迭代次数阈值。
[0211] 简化处理迭代次数的初始值为0,每执行一次步骤S510,则将简化处理迭代次数加1。在本申请实施例中,当设定面积增量阈值为自适应阈值时,会预设初始面积增量阈值、面
积阈值增长步长、目标简化率以及迭代次数阈值。例如可以预设初始面积增量阈值为待简
化多边形初始面积的5%,面积阈值增长步长为待简化多边形初始面积的0.5%,目标简化率
为60%,迭代次数阈值为5。
[0212] 步骤S512,获取待简化多边形的第一顶点总数和所述简化后的多边形的第二顶点总数。
[0213] 步骤S513,基于所述第一顶点总数和所述第二顶点总数确定实际简化率。
[0214] 在实现时,将第二顶点总数除以第一顶点总数得到实际简化率。
[0215] 步骤S514,确定实际简化率是否大于目标简化率且简化处理迭代次数是否未达到预设的迭代次数阈值。
[0216] 当所述实际简化率大于所述目标简化率且未达到预设迭代次数阈值时,说明还可以继续进行简化过程,此时进入步骤S515,当实际简化率小于或者等于目标简化率,或者,
简化处理迭代次数达到迭代次数阈值,确定达到简化结束条件进入步骤S517。
[0217] 步骤S515,基于面积增量阈值和面积阈值增长步长确定更新后的面积增量阈值。
[0218] 在实现时,将面积增量阈值与面积阈值增长步长的和确定为更新后的面积增量阈值。
[0219] 步骤S516,转入步骤S501。
[0220] 在实际应用过程中,在步骤S515之后,再次转入步骤S501,重复执行多边形简化过程,此时步骤S501中的面积增量阈值为更新后的面积增量阈值,也即基于所述更新后的面
积增量阈值再次对所述待简化多边形进行简化处理。
[0221] 步骤S517,确定达到简化结束条件,获得简化后的多边形。
[0222] 在确定达到简化结束条件时,也即得到了简化后的多边形。
[0223] 在本申请实施例提供的多边形简化方法中,首先获取待简化多边形的初始拓扑结构信息和面积增量阈值,并基于所述初始拓扑结构信息确定至少一个目标简化对象,然后
计算对各个目标简化对象进行简化处理后的面积增加量,并将所述各个目标简化对象和对
应的面积增加量增加至动态优先级队列,之后依次从所述动态优先级队列中获取队首的目
标简化对象;在确定对所述目标简化对象进行简化处理后不会改变所述待简化多边形的拓
扑结构,且对所述目标简化对象进行简化处理后的累积面积增加量小于或者等于所述面积
增量阈值时,对所述目标简化对象进行简化处理,并更新所述动态优先级队列。在本申请实
施例中,如果面积增量阈值为自适应阈值,在进行一轮简化处理后,将面积增量阈值进行更
新,得到更新后的面积增量阈值,并重复执行多边形简化过程,如此能够保证不论是针对何
种形状的待简化多边形既能保证达到预设的简化率,又可以保证简化效果。
[0224] 下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。
[0225] 本申请实施例提供的多边形简化方法可以应用但不限于以下三种装箱工具:
[0226] 1)Nest工具:该工具基于NFP策略对2UV项目生成的UV岛(用带孔多边形表示)进行紧致装箱。我们在计算带孔多边形的NFP时,需要计算两个带孔多边形的闵可夫斯基和,但
是该计算的时间复杂度为O(mn),其中m是空间容器(container)的顶点个数,n是多边形/带
孔多边形的顶点个数。当UV岛边界比较复杂或者UV岛数量较多时,计算耗时很大。另一方
面,装箱结果虽然可以容忍多边形之间存在小间隙,但是绝对不允许多边形之间发生交叠。
为此,在Nest工具装箱之前,可以利用本申请实施例提供的多边形简化方法对各个UV岛进
行面积非递减的简化,然后用简化结果进行装箱。这样既可以提高运行速度,又可以保证装
箱结果不发生交叠。
[0227] 2)Reposition工具:该工具的原理是,首先计算UV岛之间的间隙所构成的Voronoi Segment,然后将比较小的UV岛放置在空余位置较大的Voronoi Segment所对应的紧致包围
盒之内。但是计算原始UV岛的间隙所构成的Voronoi Segment比较耗时;除此之外,需要保
证Voronoi Segment所对应的OBB不能和原始UV岛发生交叠(但是可以存在空隙),因此相关
技术中的简化算法不再适用。为此在计算UV岛间隙之前,可以首先利用本申请实施例提供
的多边形简化方法对UV岛进行面积非递减的简化,从而使得计算Voronoi Segment的规模
大大降低,同时也可以保证生成的OBB不会和原始UV岛发生交叠。
[0228] 3)Extend工具:该工具的原理是,将每个UV岛试图向其局部空间进行各向同性或者各向异性的扩展。在计算扩展比例的时候,需要采用AABB树这样一种空间搜索结构,对求
交过程进行加速。但是当UV岛的边界上线段过多时,则会导致AABB树的构建和查询较慢。为
此,可以首先利用本申请实施例提供的多边形简化方法对除当前UV岛之外的UV岛进行面积
非递减的简化,以大大减少参与AABB树构建的线段个数。由于采用了面积非递减的简化,所
以生成的AABB树就会向UV岛空隙适当扩展,从而使得对UV岛扩展比例的计算就相对保守,
即使扩展不完全充分,也不会发生过度扩展从而导致发生交叠。
[0229] 以下对本申请实施例提供的多边形简化方法的技术实现过程进行说明。
[0230] 在实现时,用户首先给定一个面积增加值的阈值δ(比如5%),利用本申请实施例提供的多边形简化方法需要保证简化结果的面积不超过原始输入的面积的(1+δ)倍。其简化
的基本思想是:对于带孔多边形外边界上的内凹顶点,考虑直接进行剔除;对于带孔多边形
外边界上的外凸线段,考虑将其简化为一个顶点;对于带孔多边形孔洞上的内凹顶点或者
外凸线段,也进行类似处理。
[0231] 图6A和图6B为本申请实施例提供的多边形简化方法的逻辑思路示意图,其中,图6A的601为初始多边形,602代表边界和孔洞上的内凹顶点被剔除之后的效果,其中黑色加
粗线段为新增线段;图6B的611为初始多边形,612为边界和孔洞上的内凹顶点和外凸线段
被简化之后的效果,612中的虚线段为外凸线段被简化后新增的线段。可以看出,无论是剔
除内凹顶点,还是简化外凸线段,带孔多边形的面积都没有减少,并且在大多数情况下增加
了(一般而言,只有剔除共线顶点或者简化共线线段时,才不会引起面积增加)。
[0232] 为了在保证面积增加值不超过阈值的前提下,带孔多边形被尽量充分的简化,采用动态优先级队列来确定不同顶点的简化顺序。动态优先级队列是一种容器类型的数据结
构,其元素通常由关键字和值组成。每当队列中插入或者删除一个元素时,该队列中的元素
顺序都会进行动态调整,使得值最大(或最小)的元素位于队列顶端,因此,每次从动态优先
级队列中得到的元素都保证是所有元素中值最大或者最小的。用户可以自定设定每次得到
最大值元素还是最小值元素。
[0233] 本申请实施例提供的多边形简化方法可以通过以下步骤实现:
[0234] 步骤S801,确定多边形中的内凹顶点和外凸线段。
[0235] 在该步骤中,需要确定多边形中边界和孔洞上的内凹顶点以及外凸线段。
[0236] 对于相邻线段(p,q)和(q,r),如果顶点(p,q,r)形成了右转关系(right turn),则定义q为内凹顶点。对于相邻线段(p,q)、(q,r)和(r,s)如果(p,q,r)和(q,r,s)均形成了左
转关系(left turn),那么定义线段(q,r)为外凸线段。在实际实现过程中,为了防止外凸线
段被简化之后形成尖点,从而导致原始带孔多边形的包围盒增大过多,只有当线段(p,q)和
(s,r)的延长线形成的角度为钝角时,才对外凸线段(q,r)进行简化。
[0237] 步骤S802,对于边界和孔洞上的每个内凹顶点,计算剔除它所引起的面积增加量。
[0238] 对于内凹顶点而言,剔除它所引起的面积增加量即为和它相邻的两条线段所形成的三角形的面积,也即图7A中,两条黑色线段和一条加粗线段所形成的三角形701、702和
703的面积。
[0239] 步骤S803,对于边界和孔洞上的每个外凸线段,计算简化它所引起的面积增加量。
[0240] 对于简化外凸线段而言,其面积增加值即为延长和它相邻的两条线段所形成的交点与这两条延长线所形成的三角形面积,即图7B中三角形711的面积。
[0241] 步骤S804,将内凹顶点和内凹顶点引起的面积增加量、外凸线段和外凸线段引起的面积增加量存入一个动态优先级队列Q中,并将Q中的元素按照面积增加量的递增顺序进
行排列。
[0242] 步骤S805,判断动态优先级队列Q是否为空。
[0243] 其中,如果动态优先级队列Q为空,则结束流程,如果动态优先级队列Q不为空,进入步骤S806。
[0244] 步骤S806,获取该动态优先队列Q的队首元素e;
[0245] 步骤S807,预测对元素e进行简化操作后,新产生的线段是否会与原有线段发生相交。
[0246] 其中,如果新产生的线段与原有线段发生相交,表明拓扑结构已发生变化,此时进入步骤S805;如果新产生的线段与原有线段不发生相交,表明拓扑结构未发生变化,此时进
入步骤S808。
[0247] 步骤S808,预测对元素e进行简化操作后,多边形的面积增加量是否会超过阈值。
[0248] 其中,如果多边形的面积增加量超过阈值,则结束流程;如果多边形的面积增加量未超过阈值,则进入步骤S809。
[0249] 步骤S809,对元素e进行简化操作。
[0250] 在本申请实施例中,如果元素e为内凹顶点,该简化操作为删除该内凹顶点,并连接该内凹顶点的两个相邻顶点;如果元素e为外凸线段,则该简化操作是,分别延长至该外
凸线段的相邻线段,直至相交,删除该外凸线段。
[0251] 步骤S810,更新带孔多边形面积。
[0252] 步骤S811,更新动态优先级队列Q,并转入步骤S805。
[0253] 该步骤在实现时,对于相邻线段(p,q)和(q,r),如果对内凹顶点q进行了剔除,那么需要在Q中更新顶点p和r的面积增加量。如果p和r已经在Q中,则首先删除它们;接着判断
在新的多边形中,p和r是否是内凹顶点或者处在外凸线段上,如果是,则计算其面积增加
量,并加入Q中;如果不是,则不进行处理。对于相邻线段(p,q)、(q,r)和(r,s)而言,如果对
外凸线段(q,r)进行了简化,并且假设(p,q)和(s,r)的延长线相交于t,则需要在Q中更新p、
q、r、s、t的面积增加量。如果p、q、r、s已经存在于Q中,则首先删除它们;接着判断在新的多
边形p、t、s是否是内凹顶点或者处在外凸线段上,如果是,则计算其面积增加量,并加入Q
中。注意在简化外凸线段之后,q和r已经不再是带孔多边形的顶点了,所以不需要再进行考
虑。
[0254] 在步骤S801至步骤S811所示的多边形的简化方法中,既考虑剔除内凹顶点,又考虑简化外凸线段。虽然简化外凸线段可以有效地实现多边形简化的目的,但是在某些情况
下却导致简化结果的包围盒增大,这对部分几何应用来说不可接受。为此,可以将上述步骤
S801至步骤S811所示的多边形简化方法进一步简化,即只允许剔除内凹顶点,而不允许简
化外凸线段。基于此,本申请再提供一种多边形简化方法,该方法可以通过以下步骤实现:
[0255] 步骤S901,确定多边形中的内凹顶点。
[0256] 步骤S902,对于边界和孔洞上的每个内凹顶点,计算剔除它所引起的面积增加量。
[0257] 步骤S903,将内凹顶点和内凹顶点引起的面积增加量存入一个动态优先级队列Q中,并将Q中的元素按照面积增加量的递减顺序进行排列。
[0258] 步骤S904,判断动态优先级队列Q是否为空。
[0259] 其中,如果动态优先级队列Q为空,则结束流程,如果动态优先级队列Q不为空,进入步骤S905。
[0260] 步骤S905,获取该动态优先队列Q的队首元素e;
[0261] 步骤S906,预测对元素e进行简化操作后,新产生的线段是否会与原有线段发生相交。
[0262] 其中,如果新产生的线段与原有线段发生相交,表明拓扑结构已发生变化,此时进入步骤S904;如果新产生的线段与原有线段不发生相交,表明拓扑结构未发生变化,此时进
入步骤S907。
[0263] 步骤S907,预测对元素e进行简化操作后,多边形的面积增加量是否会超过阈值。
[0264] 其中,如果多边形的面积增加量超过阈值,则结束流程;如果多边形的面积增加量未超过阈值,则进入步骤S908。
[0265] 步骤S908,对元素e进行简化操作。
[0266] 在本申请实施例中,如果元素e为内凹顶点,该简化操作为删除该内凹顶点,并连接该内凹顶点的两个相邻顶点。
[0267] 步骤S909,更新带孔多边形面积。
[0268] 步骤S910,更新动态优先级队列Q,并转入步骤S904。
[0269] 通过步骤S901至步骤S910进行多边形简化时,虽然在简化率方面会受到一些影响,但是却可以保证带孔多边形简化之后,其包围盒保持不变,且能够提高简化效率。
[0270] 尽管基于固定阈值的面积非递减简化算法对于大多数带孔多边形都可以得到满意的简化结果,但是对于某些特殊的形状,固定阈值的简化结果往往并不能满足后续算法
的效率要求。例如,如果多边形为如图8所示的树叶状多边形,如果设置较小的面积增加阈
值,往往当简化很少的步骤之后算法就会终止,使得后续算法达不到明显的加速效果;但是
如果设置较大的面积增加阈值,则会导致对一些其它类型的多边形的简化形变过大。为此,
在本申请实施例中,利用自适应阈值进行多边形简化,在实现时,首先获取用户设置的初始
阈值δ0、阈值递增步长λ、最大迭代次数n,以及多边形的平均简化率ω,并初始化面积增加
阈值比例δ=δ0;在进行一轮多边形简化后,计算简化率ω=voutput/vinput,其中voutput表示该轮
简化后所有多边形的顶点个数之和,vinput表示原始输入中所有多边形的顶点个数之和;如
果ω≤ω,或者迭代次数已达到阈值n,则流程结束;否则令δ=δ+λ,并进行下一轮简化过程。
[0271] 在基于自适应阈值进行多边形简化时,无论多边形的形状是否特殊,都可以得到预先设定的简化率,从而为后续比较耗时的算法获得较好的加速效果。
[0272] 实验结果表明,采用面积非递减的带孔多边形简化算法,即使将面积增加阈值设置为较为保守的5%,平均而言也可以使得带孔多边形的顶点个数减少50%左右,并且原始输
入的拓扑结构可以得到保持。
[0273] 在nest工具中的装箱算法执行之前,如果采用该面积非递减的多边形简化算法进行预处理,则Minkowski Sum算法的执行时间可以降低到原来的20‑30%左右,整个算法的运
行时间可以降低到原来的40%左右,并且通过本申请实施例所提供的多边形的简化方法既
可以大大简化多边形顶点个数,又可以较好地保持多边形形状。
[0274] 在reposition工具中,如果采用面积非递减的多边形进行预处理,则参与计算Voronoi Segment的多边形线段个数可以降低到原来的一半,计算Voronoi Segment的效率
可以提高3至4倍。不仅如此,得到的Voronoi Segment也更加简化,方便后续处理。
[0275] 下面继续说明本申请实施例提供的多边形简化装置443的实施为软件模块的示例性结构,在一些实施例中,如图2所示,存储在存储器440的多边形简化装置443中的软件模
块可以包括:
[0276] 第一确定模块4431,用于获取待简化多边形的初始拓扑结构信息和面积增量阈值,并基于所述初始拓扑结构信息确定至少一个目标简化对象;
[0277] 第二确定模块4432,用于确定对各个目标简化对象进行简化处理后的面积增加量,并将所述各个目标简化对象和对应的面积增加量增加至动态优先级队列;
[0278] 第一获取模块4433,用于依次从所述动态优先级队列中获取队首的目标简化对象;
[0279] 第一简化模块4434,用于在确定对所述目标简化对象进行简化处理后不会改变所述待简化多边形的拓扑结构,且对所述目标简化对象进行简化处理后的累积面积增加量小
于或者等于所述面积增量阈值时,对所述目标简化对象进行简化处理,并更新所述动态优
先级队列;
[0280] 第二获取模块4435,用于在确定达到简化结束条件时,获得简化后的多边形。
[0281] 在一些实施例中,该第一确定模块,还用于:
[0282] 基于所述初始拓扑结构信息获取所述待简化多边形上两两相邻的第一线段和第二线段,所述第一线段的端点为第一顶点和第二顶点,所述第二线段的端点为第二顶点和
第三顶点;
[0283] 当所述第一顶点、所述第二顶点和所述第三顶点形成右转关系时,将所述第二顶点确定为目标简化对象。
[0284] 在一些实施例中,该第二确定模块,还用于:
[0285] 获取所述目标简化对象、所述第一顶点和所述第三顶点的坐标信息;
[0286] 基于所述目标简化对象、所述第一顶点和所述第三顶点的坐标信息,确定所述目标简化对象、所述第一顶点和所述第三顶点构成的第一三角形的第一面积;
[0287] 将所述第一面积确定为对所述第二顶点进行简化处理后的面积增加量。
[0288] 在一些实施例中,该装置还包括:
[0289] 第三确定模块,用于确定连接所述第一顶点和所述第三顶点得到的第一候选线段是否与所述待简化多边形中除以所述目标简化对象为顶点的线段之外的其它线段相交;
[0290] 第四确定模块,用于当确定所述第一候选线段与任一其它线段均不相交时,确定对所述目标简化对象进行简化处理后不会改变所述待简化多边形的拓扑结构。
[0291] 在一些实施例中,第一简化模块,还用于:
[0292] 将所述第二顶点、所述第一线段和所述第二线段从当前拓扑结构信息中删除,得到删除后的拓扑结构信息;
[0293] 将所述候选线段增加至所述删除后的拓扑结构信息,得到增加后的拓扑结构信息;
[0294] 将所述第一顶点和所述第三顶点中存在于所述动态优先级队列的顶点删除;
[0295] 基于所述增加后的拓扑结构信息确定所述第一顶点和第三顶点中存在新增目标简化对象时,确定所述新增目标简化对象对应的面积增加量;
[0296] 将所述新增目标简化对象和所述新增目标简化对象对应的面积增加量增加至所述动态优先级队列。
[0297] 在一些实施例中,第一确定模块,还用于:
[0298] 基于所述初始拓扑结构信息确定三个相邻的第三线段、第四线段和第五线段,其中,所述第三线段的端点为第四顶点和第五顶点,所述第四线段的端点为第五顶点和第六
顶点,所述第五线段的端点为第六顶点和第七顶点;
[0299] 当所述第四顶点、所述第五顶点和所述第六顶点形成左转关系且所述第五顶点、所述第六顶点和所述第七顶点形成左转关系时,确定所述第三线段的延长线和所述第五线
段的延长线之间的交点;
[0300] 当第二候选线段与第三候选线段之间的夹角为钝角时,将所述第四线段确定为目标简化对象,所述第二候选线段是以所述第四顶点和所述交点为端点的线段,所述第三候
选线段是以所述交点和所述第七顶点为端点的线段。
[0301] 在一些实施例中,第二确定模块,还用于:
[0302] 获取所述交点、所述第五顶点和所述第六顶点的坐标信息;
[0303] 基于所述交点、所述第五顶点和所述第六顶点的坐标信息,确定所述交点、所述第五顶点和所述第六顶点构成的第二三角形的第二面积;
[0304] 将所述第二面积确定为对所述第四线段进行简化处理后的面积增加量。
[0305] 在一些实施例中,该装置还包括:
[0306] 第五确定模块,用于确定所述第二候选线段和所述第三候选线段是否与所述待简化多边形中除所述第四线段之外的其它线段相交;
[0307] 第六确定模块,用于当确定所述第二候选线段与任一其它线段均不相交且所述第三候选线段与任一其它线段均不相交时,确定对所述目标简化对象进行简化处理后不会改
变所述待简化多边形的拓扑结构。
[0308] 在一些实施例中,该第一简化模块,还用于:
[0309] 将所述第三线段、所述第四线段、所述第五线段、所述第五顶点和所述第六顶点从当前拓扑结构信息中删除,得到删除后的拓扑结构信息;
[0310] 将所述交点、所述第二候选线段和所述第三候选线段增加至所述删除后的拓扑结构信息,得到增加后的拓扑结构信息;
[0311] 将所述第四顶点、所述第五顶点、所述第六顶点、所述第七顶点、所述第三线段和所述第五线段中存在于所述动态优先级队列的顶点删除;
[0312] 基于所述增加后的拓扑结构信息确定所述第四顶点、所述第七顶点、所述交点、所述第二候选线段和所述第三候选线段中存在新增目标简化对象时,确定所述新增目标简化
对象对应的面积增加量;
[0313] 将所述新增目标简化对象和所述新增目标简化对象对应的面积增加量增加至所述动态优先级队列。
[0314] 在一些实施例中,该装置还包括:
[0315] 第三获取模块,用于获取预设的面积阈值增长步长、目标简化率和迭代次数阈值;
[0316] 第四获取模块,用于获取待简化多边形的第一顶点总数和所述简化后的多边形的第二顶点总数;
[0317] 第七确定模块,用于基于所述第一顶点总数和所述第二顶点总数确定实际简化率;
[0318] 阈值更新模块,用于当所述实际简化率大于所述目标简化率且简化处理迭代次数未达到所述迭代次数阈值时,基于所述面积增量阈值和所述面积阈值增长步长确定更新后
的面积增量阈值;
[0319] 第二简化模块,用于基于所述更新后的面积增量阈值再次对所述待简化多边形进行简化处理。
[0320] 在一些实施例中,该装置还包括:
[0321] 第八确定模块,用于确定所述动态优先级队列为空且面积增量阈值不为自适应阈值时,确定达到简化结束条件;或者,该装置还包括:
[0322] 第九确定模块,用于确定所述累积面积增加量大于所述面积增量阈值且面积增量阈值不为自适应阈值时,确定达到简化结束条件;或者,该装置还包括:
[0323] 第十确定模块,用于确定所述实际简化率小于或者等于所述目标简化率确定达到简化结束条件;或者,该装置还包括:
[0324] 第十一确定模块,用于确定简化处理迭代次数达到预设的迭代次数阈值时,确定达到简化结束条件。
[0325] 需要说明的是,本申请实施例针对多边形简化装置的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本装置实施例中未披露的技术细
节,请参照本申请方法实施例的描述而理解。
[0326] 本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处
理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机
设备执行本申请实施例上述的多边形简化方法。
[0327] 本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的多边形
简化方法,例如,如图3、图4、图5示出的多边形简化方法。
[0328] 在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD‑ROM等存储器;也可以是包括上述存储器之一或任意组合的
各种设备。
[0329] 在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其
可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在
计算环境中使用的其它单元。
[0330] 作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper Text 
Markup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件
中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
[0331] 作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备
上执行。
[0332] 以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之
内。