CN115222806B - 多边形处理方法、装置、设备及计算机可读存储介质 - Google Patents
多边形处理方法、装置、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN115222806B CN115222806B CN202211141045.1A CN202211141045A CN115222806B CN 115222806 B CN115222806 B CN 115222806B CN 202211141045 A CN202211141045 A CN 202211141045A CN 115222806 B CN115222806 B CN 115222806B
- Authority
- CN
- China
- Prior art keywords
- polygon
- target
- bounding box
- determining
- square
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003672 processing method Methods 0.000 title abstract description 38
- 230000033001 locomotion Effects 0.000 claims abstract description 71
- 238000000034 method Methods 0.000 claims abstract description 46
- 238000012545 processing Methods 0.000 claims abstract description 34
- 230000015654 memory Effects 0.000 claims description 23
- 238000013507 mapping Methods 0.000 claims description 15
- 230000006835 compression Effects 0.000 claims description 10
- 238000007906 compression Methods 0.000 claims description 10
- 238000004422 calculation algorithm Methods 0.000 abstract description 18
- 238000010586 diagram Methods 0.000 description 16
- 238000004364 calculation method Methods 0.000 description 15
- 238000007667 floating Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 11
- 238000004891 communication Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 238000001514 detection method Methods 0.000 description 6
- 230000009466 transformation Effects 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 239000000203 mixture Substances 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 238000003825 pressing Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 241000208199 Buxus sempervirens Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/203—Drawing of straight lines or curves
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F13/00—Video games, i.e. games using an electronically generated display having two or more dimensions
- A63F13/50—Controlling the output signals based on the game progress
- A63F13/52—Controlling the output signals based on the game progress involving aspects of the displayed game scene
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/60—Editing figures and text; Combining figures or text
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/11—Region-based segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
- G06T7/246—Analysis of motion using feature-based methods, e.g. the tracking of corners or segments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/50—Depth or shape recovery
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/60—Analysis of geometric attributes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20021—Dividing image into blocks, subimages or windows
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/12—Bounding box
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/21—Collision detection, intersection
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Geometry (AREA)
- Image Generation (AREA)
Abstract
本申请提供了一种多边形处理方法、装置、设备及计算机可读存储介质;方法包括:获取待处理的原始多边形,确定原始多边形的第一目标包围盒;基于第一目标包围盒确定移动信息,基于移动信息移动原始多边形和第一目标包围盒;确定移动后的原始多边形的第二目标包围盒,并将第二目标包围盒划分为多个正方形;将多个正方形中与移动后的原始多边形存在相交区域的正方形确定为目标正方形,基于目标正方形的连接边生成目标多边形,其中,目标多边形的连接边为目标正方形的部分连接边;基于移动信息将目标多边形移动至原始多边形对应的位置。通过本申请,能够将原始多边形近似为连接边均为横平竖直的目标多边形,从而提高多边形几何处理算法的处理速度。
Description
技术领域
本申请涉及数据处理技术,尤其涉及一种多边形处理方法、装置、设备及计算机可读存储介质。
背景技术
在和带孔多边形处理相关的应用中,广泛存在这样一类需求:将原始形状做一定的近似处理以得到一个近似形状,然后将近似形状作为输入得到算法执行的近似结果,接着对近似结果做进一步处理得到最终结果,或者直接作为最终结果。例如对于多边形碰撞检测问题,可以首先计算多边形的凸包,然后用凸包作为碰撞检测算法的输入,以过滤掉一大批不可能碰撞的多边形(原理是:如果两个多边形的凸包不相交,那么原始多边形不可能相交),最后仅检测凸包相交的多边形。实践表明,这是一种对提高计算效率非常有效的手段。
这里的关键在于对原始形状进行近似处理以得到近似形状的方法。在相关技术中,针对不同的应用需求,需要生成不同类型的近似形状,因此需要为不同的应用需求提供不同的多边形近似处理方法。
发明内容
本申请实施例提供一种多边形处理方法、装置及计算机可读存储介质,能够将原始多边形近似为连接边均为横平竖直的目标多边形,从而提高多边形几何处理算法的处理速度。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种多边形处理方法,包括:
获取待处理的原始多边形,并确定所述原始多边形的第一目标包围盒;
基于所述第一目标包围盒确定移动信息,并基于所述移动信息移动所述原始多边形和所述第一目标包围盒;
确定所述移动后的原始多边形的第二目标包围盒,并将所述第二目标包围盒划分为多个正方形,所述第二目标包围盒的左下顶点为坐标原点;
将所述多个正方形中与所述移动后的原始多边形存在相交区域的正方形确定为目标正方形,基于所述目标正方形的连接边生成目标多边形,其中,所述目标多边形的连接边为所述目标正方形的部分连接边;
基于所述移动信息将所述目标多边形移动至所述原始多边形对应的位置。
本申请实施例提供一种多边形处理装置,包括:
第一确定模块,用于获取待处理的原始多边形,并确定所述原始多边形的第一目标包围盒;
第一移动模块,用于基于所述第一目标包围盒确定移动信息,并基于所述移动信息移动所述原始多边形和所述第一目标包围盒;
第二确定模块,用于确定所述移动后的原始多边形的第二目标包围盒,并将所述第二目标包围盒划分为多个正方形,所述第二目标包围盒的左下顶点为坐标原点;
多边形生成模块,用于将所述多个正方形中与所述移动后的原始多边形存在相交区域的正方形确定为目标正方形,基于所述目标正方形的连接边生成目标多边形,其中,所述目标多边形的连接边为所述目标正方形的部分连接边;
第二移动模块,用于基于所述移动信息将所述目标多边形移动至所述原始多边形对应的位置。
本申请实施例提供一种计算机设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现本申请实施例提供的多边形处理方法。
本申请实施例提供一种计算机程序产品,包括计算机程序或指令,所述计算机程序或指令被处理器执行时实现本申请实施例提供的多边形处理方法。
本申请实施例具有以下有益效果:
获取待处理的原始多边形,并确定所述原始多边形的第一目标包围盒;
基于所述第一目标包围盒确定移动信息,并基于所述移动信息移动所述原始多边形和所述第一目标包围盒;
确定所述移动后的原始多边形的第二目标包围盒,并将所述第二目标包围盒划分为多个正方形;
将所述多个正方形中与所述移动后的原始多边形存在相交区域的正方形确定为目标正方形,基于所述目标正方形的连接边生成目标多边形,其中,所述目标多边形的连接边为所述目标正方形的部分连接边;
基于所述移动信息将所述目标多边形移动至所述原始多边形对应的位置。在本申请实施例提供的多边形处理方法中,在获取到待处理的原始多边形之后,首先确定出原始多边形的第一目标包围盒,然后基于第一目标包围盒确定移动信息,基于移动信息移动原始多边形和第一目标包围盒,其中移动后的第一目标包围盒的左下顶点是与坐标原点重合的,然后再确定移动后的原始多边形的第二目标包围盒,并将第二目标包围盒划分为多个正方形;将多个正方形中与移动后的原始多边形存在相交区域的正方形确定为目标正方形,基于目标正方形的连接边生成目标多边形,其中,目标多边形的连接边为目标正方形的部分连接边;基于移动信息将目标多边形移动至原始多边形对应的位置,由于第二目标包围盒的左下顶点为坐标原点,且第二目标包围盒的两条连接边分别与x轴、y轴重合,因此,将第二目标包围盒划分出的多个正方形的连接边也是与x轴或y轴平行的。进一步地,目标多边形的连接边是目标正方形的连接边,也就是说,目标多边形的连接边是平行于x轴或y轴的,也即均为横平竖直的,从而提高利用目标多边形执行几何算法时的执行效率和鲁棒性。
附图说明
图1是本申请实施例提供的游戏系统100的架构示意图;
图2为本申请实施例提供的服务器400的结构示意图;
图3是本申请实施例提供的多边形处理方法的一种实现流程示意图;
图4是本申请实施例提供的多边形处理方法的另一种实现流程示意图;
图5是本申请实施例提供的多边形处理方法的再一种实现流程示意图;
图6是本申请实施例提供的原始多边形和原始多边形对应的坐标可精确表示的包围盒的示意图;
图7是本申请实施例提供的判别方格中心点与带孔多边形的内外部关系示意图;
图8是本申请实施例提供的有效方格对带孔多边形的覆盖示意图;
图9为通过有效方格的有效边界生成坐标可精确表示的曼哈顿带孔多边形的示意图;
图10为本申请实施例提供的一般曼哈顿多边形示意图;
图11为针对同一多边形近似为坐标可精确表示的曼哈顿多边形和一般曼哈顿多边形的示意图;
图12是本申请实施例生成的45度角曼哈顿多边形示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步的详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)多边形(Polygon):由三条或者三条以上的有向线段首尾顺次连接所组成的封闭平面图形。一般约定有向线段的右侧为其内部,左侧为其外部。因此,有限面积的多边形顶点一般呈逆时针方向排列。
2)曼哈顿多边形(Manhanttan Polygon):所有边都满足横平竖直性质的多边形称为曼哈顿多边形。
3)带孔多边形(Polygon with holes):由一个外边界(由逆时针排列的多边形构成)和若干个包含在外边界内部的孔洞(由顶点顺时针排列的多边形构成)构成,可表示平面上的一个连通区域。
4)一般曼哈顿带孔多边形(Manhattan polygon with holes):外边界以及所有内部孔洞均为曼哈顿多边形的带孔多边形,称为曼哈顿带孔多边形。
5)坐标可精确表示(Coordnates represented exactly):是指空间中的坐标数值可由计算机中的数值系统精确表示而不产生精度误差。在本申请实施例中,坐标可精确表示是指采用常用的浮点数就可以精确表示坐标数值。一般小数部分具有形式的实数可由浮点数精确表示。
6)折线段(Polylines):由若干条线段首尾顺次连接所组成的不封闭平面图形。
7)装箱问题(Packing problem);本文定义的装箱问题是指将多个(带孔)多边形紧致地排列在纹理空间内,并使得纹理空间的利用率尽可能高的过程。
8)细节层次(Level of detail,LOD):在计算机图形学领域,细节层次随着物体或者模型远离观察者而逐步降低。由于它能够通过减少多边形的数目从而提升渲染效率,所以在计算机与视频游戏中经常使用这项技术。由于物体距离很远,所以理论上并不会察觉到模型或者物体的视觉质量会有所下降。
10)45度角曼哈顿带孔多边形(Manhattan Polygon_45 with holes):如果一个带孔多边形的每条边和x正方向夹角都是45°的整数倍,则称其为45度角曼哈顿带孔多边形。
11)AABB树(Axes Aligned Bounding Box Tree):一种基于K-d树原理实现的空间搜索树,其每个节点代表一个三维几何图元的空间包围盒。该数据结构可以快速报告查询图元是否与树中的图元相交,以及具体的相交类型,相交位置等。
对于诸如装箱问题、碰撞检测问题等比较耗时的几何应用而言,需要对多边形/带孔多边形进行适当近似,以提高数据规模较大时后续算法的运行效率。为相关技术中需要为不同的应用需求提供不同的多边形近似处理方法的问题。基于此,本申请实施例提供一种多边形处理方法,处理结果具有如下特征:1)处理后的目标多边形的面积不小于原始多边形;2)目标多边形的外边界和内部孔洞上的所有边都是横平竖直的,或者和x正方向的夹角为45°的整数倍;3)目标多边形中所有顶点的坐标都可以由计算机中的浮点数精确表示(可选)。工业界中很多应用都要求中间结果的带孔多边形不小于原始带孔多边形(例如碰撞检测问题,装箱问题等),并且当满足所有边界曼哈顿性质、且坐标点可由浮点数精确表示时,可以大大提高计算效率,所以相比于已有的多边形处理方法,本申请实施例提供的多边形处理方法可以有效解决工业界这一广泛需求。
本申请实施例提供一种多边形处理方法、装置、设备和计算机可读存储介质,能够解决需要为不同的应用需求提供不同的多边形近似处理方法的问题,下面说明本申请实施例提供的计算机设备的示例性应用,本申请实施例提供的设备可以实施为笔记本电脑,平板电脑,台式计算机,机顶盒,移动设备(例如,移动电话,便携式音乐播放器,个人数字助理,专用消息设备,便携式游戏设备)等各种类型的用户终端,也可以实施为服务器。下面,将说明设备实施为服务器时示例性应用。
参见图1,图1是本申请实施例提供的游戏系统100的架构示意图,在如图1所示,该游戏系统包括终端200、网络300和服务器400,其中,终端200通过网络300连接服务器400,网络300可以是广域网或者局域网,又或者是二者的组合。
在游戏启动之前,服务器400会对游戏的3D虚拟场景进行剖分,得到二维的场景多边形图形,然后将该场景多边形图形确定为处理的原始多边形,进而确定该待处理的原始多边形的第一目标包围盒,并基于所述第一目标包围盒确定移动信息,并基于所述移动信息移动所述原始多边形和所述第一目标包围盒;之后确定所述移动后的原始多边形的第二目标包围盒,并将所述第二目标包围盒划分为多个正方形;将所述多个正方形中与所述移动后的原始多边形存在相交区域的正方形确定为目标正方形,基于所述目标正方形的连接边生成目标多边形,其中,所述目标多边形的连接边为所述目标正方形的部分连接边;基于所述移动信息将所述目标多边形移动至所述原始多边形对应的位置。由于目标多边形的连接边为目标正方形的部分连接边,也就是说目标多边形的连接边均为横平竖直的,也即目标多边形为曼哈顿多边形。
在终端200启动游戏对局,在游戏对局过程中,向服务器400发送游戏对局数据,服务器400可以基于游戏对局数据和近似后的多边形进行碰撞检测,以确定是否击中敌方虚拟对象,或者碰撞到建筑物,能够提高游戏数据的处理效率。
需要说明的是,在图1中仅仅是以游戏场景为例说明本申请实施例提供的多边形处理方法的应用场景,该多边形处理方法可以应用于任何需要曼哈顿多边形的场景。
在一些实施例中,服务器400可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端200可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、智能电视、智能车载终端等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例中不做限制。
参见图2,图2为本申请实施例提供的服务器400的结构示意图,图2所示的服务器400包括:至少一个处理器410、至少一个网络接口420、总线系统430和存储器440。服务器400中的各个组件通过总线系统430耦合在一起。可理解,总线系统430用于实现这些组件之间的连接通信。总线系统430除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统430。
处理器410可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
存储器440可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器440可选地包括在物理位置上远离处理器410的一个或多个存储设备。
存储器440包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器440旨在包括任意适合类型的存储器。
在一些实施例中,存储器440能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统441,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块442,用于经由一个或多个(有线或无线)网络接口420到达其他计算设备,示例性的网络接口420包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
在一些实施例中,本申请实施例提供的多边形处理装置可以采用软件方式实现,图2示出了存储在存储器440中的多边形处理装置443,其可以是程序和插件等形式的软件,包括以下软件模块:第一确定模块4431、第一移动模块4432、第二确定模块4433、多边形生成模块4434和第二移动模块4435,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
在另一些实施例中,本申请实施例提供的装置可以采用硬件方式实现,作为示例,本申请实施例提供的装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的多边形处理方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,ComplexProgrammable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable GateArray)或其他电子元件。
将结合本申请实施例提供的终端的示例性应用和实施,说明本申请实施例提供的多边形处理方法。
本申请实施例提供一种多边形处理方法,应用于计算机设备,该计算机设备可以是终端,也可以是服务器,在本申请实施例中,以计算机设备为,图3是本申请实施例提供的多边形处理方法的一种实现流程示意图,将结合图3示出的步骤进行说明。
步骤S101,获取待处理的原始多边形,并确定所述原始多边形的第一目标包围盒。
多边形是指由三条或三条以上的线段首尾顺次连接所组成的平面图形。待处理的原始多边形可以是将3D场景图进行剖分得到的二维多边形,还可以本身就是二维多边形。该待原始多边形可以是不带孔洞的多边形,还可以是带孔洞的多边形。其中,当一个多边形包含有一个或多个多边形时,被包含的多边形称为岛或者孔洞,包含其它多边形的多边形可以称为外多边形,外多边形和孔洞构成的多边形称为带孔多边形。
在本申请实施例中,确定原始多边形的第一目标包围盒可以基于不同近似需求有不同的实现方式,其中,当需要生成顶点坐标满足精确表示条件的目标多边形时,该第一目标包围盒的顶点坐标也是需要满足精确表示条件的,在实现时,需要对原始多边形的坐标轴对齐包围盒进行修正,得到顶点坐标也满足精确表示条件的第一目标包围盒。而当不需要生成顶点坐标满足精确表示条件的目标多边形时,该第一目标包围盒的顶点坐标是不需要满足精确表示条件的,但是此时要求第一目标包围盒为正方形,因此需要对原始多边形的坐标轴对齐包围盒进行拉伸处理,得到第一目标包围盒。
步骤S102,基于所述第一目标包围盒确定移动信息,并基于所述移动信息移动所述原始多边形和所述第一目标包围盒。
该步骤在实现时,可以首先基于所述第一目标包围盒的左下顶点的顶点坐标,确定移动向量,然后基于所述移动向量移动所述原始多边形和所述第一目标包围盒,其中,移动后第一目标包围盒的左下顶点与坐标原点重合。
基于第一目标包围盒的左下顶点的顶点坐标确定移动向量,在实现时,可以是将顶点坐标的相反数,确定为移动向量。举例来说,当第一目标包围盒的左下顶点坐标为(10,10)时,那么,移动向量为(-10,-10),基于该移动向量移动该原始多边形和第一目标包围盒,从而使得第一目标包围盒的左下顶点与坐标原点重合。
步骤S103,确定所述移动后的原始多边形的第二目标包围盒,并将所述第二目标包围盒划分为多个正方形。
与第一目标包围盒类似,确定移动后的原始多边形的第二目标包围盒,基于不同近似需求有不同的实现方式,当需要生成顶点坐标满足精确表示条件的目标多边形时,第二目标包围盒需要是顶点坐标可精确表示的,并且还需要满足划分得到的多个正方形的顶点坐标是可精确表示的,因此需要保证第二目标包围盒的长度和宽度均为正方形边长的整数倍。在将第二包围盒划分为多个正方形时,可以是将第二目标包围盒按照预设的正方形边长进行划分,其中,预设的正方形边长也必须是坐标可精确表示的。
当不需要生成顶点坐标满足精确表示条件的目标多边形时,那么就不需要要求划分出的正方形的顶点坐标是可精确表示的,因此在该步骤中,将移动后的第一目标包围盒确定为移动后的原始多边形的第二目标包围盒。在将第二包围盒划分为多个正方形时,可以基于预设的分辨率确定正方形边长,然后基于确定出的正方形边长对第二目标包围盒进行划分。
步骤S104,将所述多个正方形中与所述移动后的原始多边形存在相交区域的正方形确定为目标正方形,基于所述目标正方形的连接边生成目标多边形。
该步骤在实现时,首先确定出各个正方形的中心点,然后将中心点位于多边形内部的正方形确定为目标正方形,并将中心点不位于多边形内部,但是与多边形存在交点的正方形也确定为目标正方形。在确定出目标正方形之后,再从多个目标正方形中确定出不被两个正方形共用的目标连接边,最后基于目标连接边生成目标多边形,也就是说,所述目标多边形的连接边为所述目标正方形的部分连接边。在本申请实施例中,第二目标包围盒的左下顶点为坐标原点,且第二目标包围盒的两条连接边分别与x轴、y轴重合,因此,将第二目标包围盒划分出的多个正方形的连接边也是与x轴或y轴平行的。由于目标多边形的连接边是目标正方形的连接边,也就是说,目标多边形的连接边是平行于x轴或y轴的,也即均为横平竖直的。
步骤S105,基于所述移动信息将所述目标多边形移动至所述原始多边形对应的位置。
该步骤在实现时,可以基于该移动信息确定出将所述目标多边形移动至原始多边形对应位置的恢复向量,然后基于该恢复向量,将目标多边形移动至原始多边形对应的位置。其中,该恢复向量为移动信息对应的移动向量大小相同、方向相反的向量。承接上述举例,该移动信息对应的移动向量为(-10,-10),那么此时恢复向量为(10,10)。
在本申请实施例提供的多边形处理方法中,在获取到待处理的原始多边形之后,首先确定出原始多边形的第一目标包围盒,然后基于第一目标包围盒确定移动信息,基于移动信息移动原始多边形和第一目标包围盒,其中移动后的第一目标包围盒的左下顶点是与坐标原点重合的,然后再确定移动后的原始多边形的第二目标包围盒,并将第二目标包围盒划分为多个正方形;将多个正方形中与移动后的原始多边形存在相交区域的正方形确定为目标正方形,基于目标正方形的连接边生成目标多边形,其中,目标多边形的连接边为目标正方形的部分连接边;基于移动信息将目标多边形移动至原始多边形对应的位置,由于第二目标包围盒的左下顶点为坐标原点,且第二目标包围盒的两条连接边分别与x轴、y轴重合,因此,将第二目标包围盒划分出的多个正方形的连接边也是与x轴或y轴平行的。进一步地,目标多边形的连接边是目标正方形的连接边,也就是说,目标多边形的连接边是平行于x轴或y轴的,也即均为横平竖直的,从而提高利用目标多边形执行几何算法时的执行效率和鲁棒性。
在一些实施例中,上述步骤S101中的“确定所述原始多边形的第一目标包围盒”,基于不同近似需求有不同的实现方式,其中,当需要生成顶点坐标满足精确表示条件的目标多边形时,该第一目标包围盒的顶点坐标也是需要满足精确表示条件的,此时该步骤可以通过下述的步骤S1011A至步骤S1013A实现,以下对各个步骤进行说明。
步骤S1011A,确定所述原始多边形的坐标轴对齐包围盒。
该步骤在实现时,可以首先获取原始多边形上各个顶点的顶点坐标,然后从各个顶点的顶点坐标中,确定出最小x坐标、最大x坐标、最小y坐标、最大y坐标,然后将(最小x坐标,最小y坐标),(最大x坐标,最大y坐标)确定为坐标轴对齐包围盒的两个对角顶点坐标,进而确定出坐标轴对齐包围盒。
步骤S1012A,获取预设的坐标数值精度,并基于所述坐标数值精度,对所述坐标轴对齐包围盒的对角顶点的顶点坐标进行修正,得到修正后的顶点坐标。
其中,修正后的顶点坐标满足所述精确表示条件。在本申请实施例中,坐标可精确表示是指采用常用的浮点数就可以精确表示坐标数值。由于在计算机中,是由二进制数表示数值,整数部分是可由二进制精确表示的,而小数部分较难用二进制精确表示,但是一般而言,小数部分具有形式的可由浮点数精确表示。因此,本申请实施例中所述顶点坐标满足精确表示条件是指顶点坐标的小数部分为的整数倍。
在本申请实施例中,预设的坐标数值精度为,n为负整数。该步骤在实现时,可以是对坐标轴对齐包围盒的左下顶点和右上顶点的顶点坐标进行修正。假设最小x坐标为,修正后的最小x坐标为,那么,并且满足,是对向下取整。假设最小y坐标为,修正后的最小x坐标为,那么,并且满足,是指对向下取整。假设最大x坐标为,修正后的最大x坐标为,那么,并且满足,是指对向上取整。假设最大y坐标为,修正后的最大x坐标为,那么,并且满足。其中,a、b、c、d均为正整数。
步骤S1013A,基于所述修正后的顶点坐标,确定所述原始多边形的第一目标包围盒。
将修正后的顶点坐标确定为第一目标包围盒的顶点坐标,因此在确定出对角的两个顶点坐标之后,也就能确定出第一目标包围盒。
以第一目标包围盒的左下顶点为例,该左下顶点的坐标为,,由于该左下顶点的小数部分是2n的整数倍,因此,第一目标包围盒的左下顶点的顶点坐标是满足精确表示条件的,同理,第一目标包围盒的右上顶点的顶点坐标也是满足精确表示条件的,那么在利用第一目标包围盒确定出的移动信息也是满足精确表示条件的,从而能够保证在生成坐标能够精确表示的曼哈顿带孔多边形之后,再按照该精确表示的移动信息进行移动所得到的平移变换之后的曼哈顿带孔多边形同样满足坐标可精确表示的要求。
与上述确定所述原始多边形的第一目标包围盒类似,步骤S103“确定所述移动后的原始多边形的第二目标包围盒,并将所述第二目标包围盒划分为多个正方形”,基于不同近似需求也有不同的实现方式,其中,当需要生成顶点坐标满足精确表示条件的目标多边形时,那么第二目标包围盒划分得到的多个正方形的顶点坐标也是需要满足精确表示条件的,此时该步骤可以通过下述的步骤S1031A至步骤S1036A实现,以下对各个步骤进行说明。
步骤S1031A,确定所述第一目标包围盒的第一长度和第一宽度。
步骤S1032A,获取预设的正方形边长。
步骤S1033A,基于所述第一长度和所述正方形边长确定所述第二目标包围盒的第二长度。
该步骤在实现时,首先将第一长度除以正方形边长,并将得到的第一商值进行向上取整,得到第一整数值,再将该第一整数值乘以正方形边长,得到第二长度。由于是对商值进行向上取整,因此第二长度大于或者等于所述第一长度,且所述第二长度能够整除所述正方形边长。
步骤S1034A,基于所述第一宽度和所述正方形边长确定所述第二目标包围盒的第二宽度。
该步骤在实现时,首先将第一宽度除以正方形边长,并将得到的第二商值进行向上取整,得到第二整数值,再将该第二整数值乘以正方形边长,得到第二宽度。由于是对第二商值进行向上取整,因此第二宽度也是大于或者等于所述第一宽度的,且所述第二宽度能够整除所述正方形边长。
步骤S1035A,将所述坐标原点确定为所述第二目标包围盒的左下顶点,基于所述坐标原点、所述第二长度和所述第二宽度确定所述第二目标包围盒。
由于将坐标原点确定为第二目标包围盒的左下顶点,那么在已知长方形的一个顶点坐标以及长度和宽度后,则可以确定出该长方形的其他三个顶点坐标,也即就确定出了第二目标包围盒。
步骤S1036A,将所述第二目标包围盒按照所述正方形边长划分为多个正方形。
由于第二目标包围盒的左下顶点为坐标原点,那么将第二目标包围盒按照正方形边长进行划分得到的多个正方形,每个正方形的顶点坐标都是正方形边长的整数倍,由于正方形边长是满足精确表示条件的,因此每个正方形的顶点坐标也是满足精确表示条件的,能够保证基于正方形确定出的目标多边形的顶点坐标是可精确表示的,从而使得采用浮点数计算内核就可以保证很多几何算法的正确性和鲁棒性,并且经过实验得出采用基于浮点数计算内核的多边形布尔运算、闵可夫斯基和、维诺图等几何算法的执行效率可以达到上百倍的优化。
在一些实施例中,当不需要生成顶点坐标满足精确表示条件的目标多边形时,那么就无需要求第一目标包围盒的顶点坐标是满足精确表示条件的,此时,上述步骤S101“确定所述原始多边形的第一目标包围盒”可以通过图4中的步骤S1011B至步骤S1015B实现,以下结合图4对各个步骤进行说明。
步骤S1011B,确定所述原始多边形的坐标轴对齐包围盒。
该步骤的实现过程与步骤S1011A的实现过程是相同的,在实现时可参考步骤S1011A的实现过程。
步骤S1012B,确定所述坐标轴对齐包围盒的第三长度和第三宽度。
步骤S1013B,基于所述第三长度和所述第三宽度,确定所述原始多边形和所述坐标轴对齐包围盒的拉伸比例。
在实现时,将所述第三宽度和第二宽度的比值确定为坐标轴对齐包围盒的拉伸比例,该拉伸比例为大于1的实数。
步骤S1014B,基于所述拉伸比例,将所述原始多边形和所述坐标轴对齐包围盒进行拉伸处理,得到拉伸后的多边形和拉伸后的坐标轴对齐包围盒。
该步骤在实现时,可以是基于该拉伸比例,以原始多边形的中心点(也即坐标轴对齐包围盒的中心点)沿坐标轴对齐包围盒的宽度方向对原始多边形和坐标轴对齐包围盒进行拉伸处理,由于拉伸比例为第三长度除以第三宽度的商值,因此,拉伸后的坐标轴对齐包围盒为正方形。
步骤S1015B,将所述拉伸后的坐标轴对齐包围盒确定为第一目标包围盒。
在步骤S1011B至步骤S1015B所在的实施例中,当不需要生成坐标精确表示的目标多边形时,将原始多边形的坐标轴对齐包围盒拉伸为正方形,得到第一目标包围盒,从而保证能够将目标包围盒沿x轴方向和沿y轴方向划分出等量的正方形。
在一些实施例中,上述步骤S103“确定所述移动后的原始多边形的第二目标包围盒,并将所述第二目标包围盒划分为多个正方形”,当不需要生成顶点坐标满足精确表示条件的目标多边形时,可以通过下述的步骤S1031B至步骤S1033B实现,以下对各个步骤进行说明。
步骤S1031B,获取移动后的第一目标包围盒,将所述移动后的第一目标包围盒确定为所述移动后的原始多边形的第二目标包围盒。
也就是说,第二目标包围盒的左下顶点为坐标原点。
步骤S1032B,获取预设的正方形个数,基于所述正方形个数和所述第二目标包围盒的边长,确定正方形边长。
在本申请实施例中,预设的正方形个数可以是指单行正方形个数,那么该步骤在实现时,将第二目标包围盒的边长除以该正方形个数,得到正方形边长。
在一些实施例中,预设的正方形个数可以是指第二目标包围盒中包括的正方形总数,那么该步骤在实现,先将预设的正方形个数开方,得到单行正方形个数,然后再让第二目标包围盒的边长除以单行正方形个数,得到正方形边长。
步骤S1033B,基于所述正方形边长将所述第二目标包围盒划分为多个正方形。
通过上述步骤S1011B至步骤S1015B可以得出,当不需要生成顶点坐标满足精确表示条件的目标多边形,在确定第一目标包围盒时,将原始多边形的坐标轴对齐包围盒进行了拉伸处理,对应地,在步骤S105“基于所述移动信息将所述目标多边形移动至所述原始多边形对应的位置”之后,还需要执行图4所示的步骤S106B和步骤S107B,以下结合图4对各个步骤进行说明。
步骤S106B,基于所述拉伸比例,确定压缩比例。
该步骤在实现时,将拉伸比例的倒数确定为压缩比例。由于拉伸比例为大于1的实数,所以压缩比例为小于1的实数。
步骤S107B,基于所述压缩比例对移动至所述原始多边形对应位置的目标多边形进行压缩处理,得到压缩后的目标多边形。
这里,是以目标多边形的中心点为参考点,沿原始多边形的坐标轴对齐包围盒的宽度方向对目标多边形进行压缩处理,得到压缩后的目标多边形。由于当不需要生成坐标精确表示的目标多边形时,是将移动后的第一目标包围盒确定为第二目标包围盒,而在需要生成坐标精确表示的目标多边形时,第二目标包围盒一般是大于第一目标包围盒的,因此相对于需要生成精确表示的目标多边形来说,不需要生成坐标精确表示的目标多边形对原始带孔多边形的包络更加紧致,形状也更加逼近。
在一些实施例中,上述步骤S104“将所述多个正方形中与所述移动后的原始多边形存在相交区域的正方形确定为目标正方形,基于所述目标正方形的连接边生成目标多边形”,可以通过步骤S1041至步骤S1049实现,以下对各个步骤进行说明。
步骤S1041,确定各个正方形的中心点,将中心点位于所述移动后的原始多边形内部的正方形确定为目标正方形。
在本申请实施例中,确定中心点是否位于移动后的原始多边形内部,在实现时可以是以中心点为顶点生成一条射线,然后确定该射线和移动后的原始多边形的交点个数,如果交点个数为偶数,则说明该中心点在移动后的原始多边形外部;如果交点个数为奇数,则说明该中心点在移动后的原始多边形内部。
本申请实施例中的目标正方形对应其他实施例中的有效方格。
步骤S1042,将中心点不位于所述移动后的原始多边形内部且正方形边界与所述多边形存在交点的正方形确定为目标正方形。
如果确定中心点不位于移动后的原始多边形内部,需要进一步确定该中心点对应的正方形是否与移动后的原始多边形存在交点。在实现时,可以以移动后的原始多边形的边作为输入构造AABB树,然后对于每个不位于移动后的原始多边形内部的中心点,确定该中心点对应的正方形的四个边界是否和AABB树存在交点,如果该正方形的四个边界和AABB树存在交点,将该正方形确定为目标正方形。
步骤S1043,从所述目标正方形的连接边中确定有效连接边。
其中,所述有效连接边不被两个目标正方形共用。
步骤S1044,基于多个有效连接边,建立有效连接边的端点与有效连接边之间的映射集合。
该映射集合中包括多个有效连接边的端点与有效连接边的映射关系。
步骤S1045,基于所述映射集合,确定能够构成环形的目标端点,并基于所述能够构成环形的目标端点生成简单多边形。
该步骤在实现时,从所述映射集合中获取第k个端点,将所述第k个端点确定为当前处理端点,并将所述当前处理端点压入预先创建的端点栈中,其中,k=1,2,…,K,K为端点总数;当所述映射集合中存在一个与所述当前处理端点对应的有效连接边,将所述有效连接边从所述映射集合中删除,将所述有效连接边的另一端点压入所述端点栈;当所述端点栈中存在与栈顶端点相同的端点,将所述端点之上的各个端点进行出栈处理,并将所述各个端点确定为能够构成环形的目标端点;将所述当前处理起点的下一个端点更新为当前处理端点,并将所述当前处理端点压入所述端点栈中;当对所述映射集合中的各个端点均进行入栈处理后,所述端点栈不为空,如果所述端点栈中的当前端点能构成环形,将所述当前端点确定为目标端点。
步骤S1046,当生成的简单多边形为至少两个时,确定至少两个简单多边形之间的包含关系。
在该步骤中,需要确定简单多边形两两之间的包含关系。由于至少两个简单多边形之间是不会相交的,最多有共同的顶点,因此该步骤在实现时,首先从至少两个简单多边形中获取一个简单多边形,然后依次确定该简单多边形与其他简单多边形之间的包含关系,之后再从除该简单多边形之外的其他多边形中选择一个简单多边形,再依次确定本次选择出的简单多边形和剩余简单多边形之间的两两包含关系。以此类推,直至确定出至少两个简单多边形中所有两两简单多边形之间的包含关系。
这里,以确定第i个简单多边形与第j个简单多边形之间的包含关系为例进行说明。在实现时,可以获取第i个简单多边形的一个顶点,判断该顶点是位于第j个简单多边形的内部还是外部,如果位于第j个简单多边形的内部,说明第j个简单多边形包含第i个简单多边形,此时结束判断;如果该顶点位于第j个简单多边形的外部,说明第j个简单多边形不包含第i个简单多边形,此时也可以结束判断;如果该顶点既不位于第j个简单多边形的内部,也不位于第i个简单多边形的外部,说明该顶点为第i个简单多边形和第j个简单多边形的共同顶点,此时需要再次获取第i个简单多边形的其余顶点,继续判断,直至确定出第j个简单多边形是否包含第i个简单多边形。
步骤S1047,基于所述至少两个简单多边形之间的包含关系从所述至少两个简单多边形中确定出作为目标多边形的新外边界的至少一个第一简单多边形。
该步骤在实现时,当待修正多边形的原始外边界满足非简单多边形条件而原始孔洞满足简单多边形条件时,将至少两个简单多边形中不被任意一个除自身之外的其他简单多边形包含的简单多边形确定为作为新外边界的第一简单多边形;当待修正多边形的原始外边界和内部孔洞不满足简单多边形条件,该步骤在实现时,确定各个简单多边形的被包含次数,并将被包含次数为偶数的简单多边形确定为目标多边形的新外边界的第一简单多边形。
步骤S1048,基于第二简单多边形确定各个第一简单多边形对应的内部孔洞。
所述第二简单多边形为所述至少两个简单多边形中除所述第一简单多边形之外的其他多边形。
与步骤S1047对应,当待修正多边形的原始外边界满足相对简单多边形条件且原始孔洞满足简单多边形条件,该步骤在实现时,基于步骤S103判断多边形两两之间的包含关系的实现方式,确定被各个第一简单多边形包含的原始孔洞和第二简单多边形,从而确定出各个第一简单多边形对应的内部孔洞。当待修正多边形的原始外边界和原始孔洞均不满足简单多边形条件,该步骤在实现时,首先确定出各个第一简单多边形包含的第二简单多边形,将这些第二简单多边形确定为候选孔洞,然后将没有被除自身之外的其他候选孔洞包含的候选孔洞确定为第一简单多边形对应的内部孔洞。
步骤S1049,基于所述各个第一简单多边形和所述各个第一简单多边形各自对应的内部孔洞生成目标多边形。
在确定出各个第一简单多边形实际对应的内部孔洞之后,就可以基于各个第一简单多边形和各个第一简单多边形实际对应的内部孔洞,确定出目标多边形。
通过上述步骤S1041至步骤S1049,可以基于目标正方形的有效连接边,建立有效连接边的端点与有效连接边之间的映射集合,通过该映射集合建立有效连接边之间的连接关系,因此能够基于所述映射集合,确定出能够构成环形的目标端点,并基于所述能够构成环形的目标端点生成简单多边形,如果生成的简单多边形为至少两个时,需要确定至少两个简单多边形的包含关系,并基于所述至少两个简单多边形之间的包含关系从所述至少两个简单多边形中确定出作为新外边界的至少一个第一简单多边形;然后再基于第二简单多边形确定各个第一简单多边形对应的真正的内部孔洞,最后基于所述各个第一简单多边形和所述各个第一简单多边形各自对应的内部孔洞生成各个简单多边形,如此能够将无序线段构成的多边形生成简单多边形,从而保证利用简单多边形执行几何算法时能够正确执行。
在一些实施例中,上述步骤S1043“从所述目标正方形的连接边中确定有效连接边”,可以通过步骤S431至步骤S435实现,以下对各个步骤进行说明。
步骤S431,获取各个目标正方形的四条连接边。
步骤S432,依次确定每条连接边是否存在于预设的有效连接边集合中。
其中,当连接边存在于有效连接边集合中时,说明该连接边也是其它目标正方形的连接边,也即该连接边为两个目标正方形的共用边,此时进入步骤S433;当连接边不存在于有效连接边集合中时,说明此时连接边不为共用边,此时进入步骤S434。
步骤S433,将所述连接边从所述有效连接边集合中删除。
如果该连接边为两个目标正方形的共用边,那么说明该连接边为两个相邻的有效连接边的内部边,因此将该连接边从有效连接边集合中删除。
步骤S434,将所述连接边增加至所述有效连接边集合。
如果有效连接边集合中不存在该连接边,那么说明该连接边此时不是两个目标正方形的共用边,那么将该连接边增加至有效连接边集合。
步骤S435,将所述有效连接集合中的各个连接边确定为有效连接边。
通过上述步骤S431至步骤S435,将目标正方形中被两个目标正方形共用的连接边删除,并将不被两个目标正方形共用的连接边确定为有效连接边,能够保证近似处理后的多边形的连接边均为横平竖直的,从而能够提高多边形几何处理算法的处理速度。
在实际应用过程中,在确定需要生成顶点坐标满足精确表示条件的目标多边形时,可以通过上述步骤S101至步骤S105生成连接边均为横平竖直的目标多边形,为了使得近似后的多边形与原始多边形更接近,在步骤S105之后,可以通过图5所示的步骤S106A至步骤S109A生成坐标可精确表示的45度角曼哈顿多边形,以下结合图5对各个步骤进行说明。
步骤S106A,确定所述目标多边形的各个连接边。
步骤S107A,当第i条连接边与第(i+1)连接边形成了左转关系,且所述第i条连接边的起点与所述第(i+1)条连接边的终点形成的第一候选连接边与所述原始多边形没有交点,将所述第i条连接边和所述第(i+1)条连接边删除,将所述第一候选连接边确定为所述目标多边形的连接边。
在实现时,可以还基于第i条连接边的起点和终点,确定第i条连接边对应的第i向量,基于第(i+1)条边的起点和终点,确定第(i+1)条连接边对应的第(i+1)向量,然后确定第i向量和第(i+1)向量之间的夹角,并基于该夹角确定第i条连接边与第(i+1)条连接边是否形成了90°左转关系,如果确定第i条连接边与第(i+1)连接边形成了90°左转关系,那么,基于原始多边形的各个连接边创建AABB树,并且连接所述第i条连接边的起点与所述第(i+1)条连接边的终点,形成第一候选连接边,进而基于该AABB树确定该第一候选连接边是否与原始多边形存在交点,其中,如果第一候选连接边与原始多边形没有交点,则删除第i条连接边和所述第(i+1)条连接边,将所述第一候选连接边确定为所述目标多边形的连接边。
步骤S108A,当所述第i条连接边与所述第(i+1)条连接边的方向相同,生成第二候选连接边和第三候选连接边。
其中,第二候选连接边的起点为所述第i条连接边的终点,所述第二候选连接边与所述第i条连接边形成45°左转关系,所述第三候选边的起点为所述第二候选连接边的终点,所述第三候选连接边的终点为所述第(i+1)条连接边的终点,且所述第三候选连接边与所述第i条连接边等长。
步骤S109A,确定所述第二候选连接边和所述第三候选连接边与所述原始多边形均没有交点,将所述第(i+1)条连接边删除,将所述第二候选连接边和所述第三候选连接边确定为所述目标多边形的连接边。
该步骤在实现时,是基于该AABB树确定该第二候选连接边和第三候选连接边是否与原始多边形存在交点,如果所述第二候选连接边和所述第三候选连接边与所述原始多边形均没有交点,将删除所述第(i+1)条连接边,将所述第二候选连接边和所述第三候选连接边确定为所述目标多边形的连接边。
通过上述步骤S106A至步骤S109A,可以将坐标可精确表示的目标多边形转化为45度角曼哈顿带孔多边形,该45度角曼哈顿带孔多边形在保证坐标可精确表示的前提下,对原始多边形的包络更加紧致,形状也更加逼近。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。
基于前述实施例,本申请实施例再提供一种多边形处理方法,针对任意带孔多边形,通过该多边形处理方法可以生成具有如下特点的带孔多边形:1)结果不小于原始带孔多边形;2)结果的外边界和内部孔洞上的所有边都是横平竖直的,或者和x正方向的夹角为45°的整数倍;3)结果中所有顶点的坐标都可以由计算机中的浮点数精确表示(可选)。工业界中很多应用都要求中间结果的带孔多边形不小于原始带孔多边形(例如碰撞检测问题,装箱问题等),并且当满足所有边界曼哈顿性质、且坐标点可由浮点数精确表示时,可以大大提高计算效率,所以相比于已有的多边形处理方法,本申请实施例提供的多边形处理方法可以有效解决工业界这一通用需求。
以下对本申请实施例提供的多边形处理方法的实现过程进行说明。
首先,本申请实施例提供一种多边形处理方法,利用该多边形处理方法可以将任意给定的带孔多边形,近似为坐标可精确表示的曼哈顿带孔多边形。该多边形处理方法可以通过下述的步骤S401至步骤S405实现,以下对各个步骤进行说明。
步骤S401,移动原始带孔多边形。
为了使得任意位置的原始带孔多边形在经过本申请实施例提供的多边形处理方法的处理之后,其坐标都可以被精确表示,首先对原始多边形进行平移变换。假设原始带孔多边形如图6中的601所示,其坐标轴对齐包围盒为,并且用户设置的坐标数值分辨率为(例如当时,分辨率就是0.25,那么所有坐标点数值的小数部分都是0.25的整数倍),则定义坐标可精确表示的包围盒为:
其中。该步骤在实现时,是将原始带孔多边形移动向量,以使得新的坐标可精确表示包围盒的左下角和坐标原点重合(注意其包围盒此时未必和坐标原点重合)。这样做的原因是:在原始包围盒中,未必是坐标可精确表示的,所以如果直接移动,那么在生成曼哈顿带孔多边形之后,再移动,将会导致平移变换之后的曼哈顿带孔多边形不再满足坐标可精确表示的要求。
步骤S402,用坐标可精确表示的方格来覆盖带孔多边形的坐标可精确表示的包围盒。
在对带孔多边形进行平移变换之后,采用坐标可精确表示的方格来覆盖带孔多边形的坐标轴对齐包围盒。假设用户设定的曼哈顿带孔多边形的分辨率为,那么可以设定每个小格子的边长为然后在笛卡尔坐标系的第一象限内生成一个由小格子构成的矩形,使得该矩形刚好能够覆盖带孔多边形的坐标可精确表示的包围盒,如图6中的602所示。可以知道该矩形由个小格子构成,其中:
步骤S403,确定和带孔多边形有效区域相交的所有方格,记为有效方格。
在本申请实施例中,有效方格分为两种类型:1)其中心点在带孔多边形的有效区域内,其边界有可能和带孔多边形相交,也有可能不相交;2)其中心点在带孔多边形的有效区域外,但是其边界和带孔多边形相交。
在一些实施例中,上述步骤S403可以通过以下步骤实现:
步骤S4031,生成每个小方格的中心点,如图7的701中的灰色小点所示;
步骤S4032,对每个中心点,判断是否在带孔多边形有效区域内。
其中,如果中心点在带孔多边形的有效区域内,则标记为第一类中心点,如图7的702中的黑色小点。如果中心点在带孔多边形的有效区域外,那么暂不处理。
步骤S4033,对于所有处于带孔多边形外部的中心点,判断它对应的小格子是否和带孔多边形相交。
如果处于带孔多边形有效区域外部的中心点对应的小格子与带孔多边形相交,将该中心点标记为第一类中心点。如图8的801中包括浅灰色三角填充的小格中的中心点。
在本申请实施例中,将第一类中心点对应的的小格子被称为有效方格。在本申请实施例中,由于处于带孔多边形内部的中心点对应的小格子可能无法覆盖住带孔多边形,如图8中801所示。但观察发现,无法覆盖的区域往往是:该小格子的中心点虽然不在带孔多边形的有效区域内,但是它的边界和带孔多边形的边存在交点。为了识别这种类型的有效方格,在本申请实施例中采用的方法是:以带孔多边形的边作为输入构造AABB树,然后对于每个没有被标记为第一类中心点的其他中心点,判断它的四个边界是否和AABB树存在交点,若存在则将该中心点确定为第一类中心点。可以发现,此时第一类中心点所对应的方格可以完美覆盖原带孔多边形,如图8中的802所示。
步骤S404,根据有效方格生成坐标可精确表示的曼哈顿带孔多边形。
在得到有效方格之后,可以通过以下步骤生成坐标可精确表示的曼哈顿带孔多边形:
步骤S4041,定义一个存储边界边的集合S。
步骤S4042,对于每个有效方格,得到其四条有效边界。
步骤S4043,依次判断每条有效边界是否已经存在于集合S中。
如果一条有效边界已经存在于集合S中,进入步骤S4044,如果该条有效边界未存在于集合S中,进入步骤S4045。
步骤S4044,将该条有效边界从集合S中删除。
步骤S4045,将该条边界放入集合S中。
步骤S4046,将集合S作为输入,构造坐标可精确表示的曼哈顿带孔多边形。
如果一条有效边界是两个有效方格的共用边,那么它必然处于带孔多边形的内部。所以在处理第一个有效方格时,该有效边界将会被加入S中;当处理第二个有效方格时,该有效边界将会被从S中删除,那么在执行完对所有有效边界的判断后,集合S中的边就全部是带孔多边形的边界边。此时,基于集合S中的有效边界就可以构造出合法的带孔多边形。由于有效方格形成了对带孔多边形的完整覆盖,所以最终生成的结果的面积必然不小于原始带孔多边形。
图9为通过有效方格的有效边界生成坐标可精确表示的曼哈顿带孔多边形的示意图,其中图9的901中加粗线段为有效方格对应的边界,902为根据有效方格边界生成对应的曼哈顿带孔多边形。
步骤S405,将曼哈顿带孔多边形平移到原始位置。
由于在步骤S401中对原始带孔多边形做了平移变换,以方便生成有效方格。所以最后还需要将步骤S404所生成的结果平移,以便于恢复到原始带孔多边形的初始位置。由于是坐标可精确表示的,所以可以保证平移后的曼哈顿带孔多边形也是坐标可精确表示的。
在本申请实施例中,定义:如果一个点处在带孔多边形的外边界内部,并且处在所有孔洞的外部时,则称该点处于带孔多边形的有效区域内。对应地,上述步骤S4032“对每个中心点,判断是否在带孔多边形有效区域内”可以有以下三种实现方式:
一、采用射线法来判断点和多边形的位置关系。
以该点为顶点生成一条射线,然后计算该射线和多边形的交点个数,如果交点个数为偶数,则说明该点在多边形的有效区域外部;否则说明在多边形的有效区域内部。
二、采用OpenCV库中的提供的fillPoly函数。
OpenCV库中提供了fillPoly函数,可以用来填充任意形状的图形,也可以用来绘制多边形。可以采用如下步骤来获取处于带孔多边形内部的中心点:
步骤S322A,将带孔多边形进行等比例的缩放,然后调用fillPoly函数在画布上绘制带孔多边形;
步骤S323A,对于画布上的每个像素,如果它的值等同于绘制颜色,则表明它原来所对应的中心点处于带孔多边形内部,标记为第一类中心点,否则说明它所对应的中心点处于带孔多边形的外部。
这种方法的好处是高效,但缺点是需要依赖于OpenCV的库函数。
三、采用深度/广度优先搜索方法。
通过观察图7的702可以发现,不论是处于带孔多边形内部还是外部的中心点,其相邻的顶点都具有相同的内外部属性,除非它们之间的连线穿越了带孔多边形的边界(包括外边界上的边以及内部孔洞上的边)。因此,可以采用深度优先搜索方法或者广度优先搜索方法来更加快速地获取中心点与带孔多边形的内外部关系。以广度优先搜索策略为例来说明,此时可以通过以下步骤实现:
步骤S321B,置所有方格中心点的状态为“未计算”;
步骤S324B,当队列不为空时,重复执行步骤S325B至步骤S329B;
步骤S326B,如果不是最左侧的元素并且其左侧元素的状态为“未计算”,则构造线段,并计算该线段与带孔多边形的交点个数,如果交点个数为偶数,则置的状态等同于的状态,如果交点个数为奇数,则置的状态不同于的状态;最后将放入Q中;
步骤S327B,如果不是最右侧的元素并且其右侧元素的状态为“未计算”,则构造线段,并计算该线段与带孔多边形的交点个数,如果交点个数为偶数,则置的状态等同于的状态,如果交点个数为奇数,则置的状态不同于的状态;最后将放入Q中;
步骤S328B,如果不是最上侧的元素并且其上侧元素的状态为“未计算”,则构造线段,并计算该线段与带孔多边形的交点个数,如果交点个数为偶数,则置的状态等同于的状态,如果交点个数为奇数置的状态不同于的状态;最后将放入Q中;
步骤S329B,如果不是最下侧的元素并且其下侧元素的状态为“未计算”,则构造线段,并计算该线段与带孔多边形的交点个数,如果交点个数为偶数,则置的状态等同于的状态,如果交点个数为奇数置的状态不同于的状态;最后将放入Q中;
通过上述步骤S321B至步骤S329B也就得到了所有方格点的状态。
在上述算法中,无论方格中心点位于带孔多边形内部还是外部,只需要计算一次求交,并且由于利用了方格之间的邻接关系,所以只需要计算线段和带孔多边形的交点个数。相比于射线求交,由于其交点更少,所以计算效率更高一些。
本申请实施例还提供一种多边形处理方法,利用该多边形处理方法可以得到一般曼哈顿带孔多边形,也即该曼哈顿多边形的坐标不是精确表示的。
对于某些几何算法,其输入只需要满足曼哈顿性质即可,并不要求坐标可精确表示,例如Boost库中提供的曼哈顿带孔多边形接口。在本申请实施例中称这样的曼哈顿带孔多边形为一般曼哈顿带孔多边形。针对这种需求,只需要对上述生成精确坐标表示的曼哈顿多边形的实现过程略作修改,就可以生成一般曼哈顿带孔多边形。以下对各个步骤进行说明。
步骤S501,确定原始带孔多边形的坐标轴对齐包围盒。
步骤S502,如果该坐标轴对齐包围盒不是正方形,则对多边形的x方向或者y方向进行拉伸,使得多边形的坐标轴对齐包围盒为正方形。
该步骤在实现时,如果x轴方向对应地为坐标轴对齐包围盒的长度,那么以多边形的中心点为拉伸参考点,沿y轴方向对多边形进行拉伸;如果y轴方向对应地为坐标轴对齐包围盒的长度,那么沿x轴方向对多边形进行拉伸。
步骤S503,将拉伸后的多边形进行平移,使其坐标轴对齐包围盒的左下角和坐标原点重合。
步骤S504,根据预先定义的分辨率确定方格边长(此时方格不必是坐标可精确表示的),然后采用上述步骤S403和步骤S404,生成一般曼哈顿带孔多边形。
在本申请实施例中,预先定义的分辨率可以用P*P来表示,其中P为大于1的正整数,例如P为10,那么分辨率为10*10。该步骤在实现时,可以将正方形的坐标轴对齐包围盒的边长除以P,得到方格边长。举例来说,拉伸后得到的坐标轴对齐包围盒的边长为100,P为10,那么得到方格边长为100/10=10。
由于一般带孔多边形并不要求坐标可精确表示,所以并不需要给方格施加坐标可精确表示的严格限制,这样小方格所形成的正方形就等同于拉伸后的多边形的坐标轴对齐包围盒。
在确定出方格边长之后,基于该方格边长将拉伸得到的正方形坐标轴对齐包围盒进行划分,得到P*P个小方格。然后再采用上述步骤S403和步骤S404,从P*P个小方格中确定出与拉伸后的多边形相交的有效方格,再基于有效方格的连接边,确定出有效连接边,最后基于多个有效连接边生成如图10所示的一般曼哈顿带孔多边形。其中,图10中加粗线段构成的多边形1001为一般曼哈顿带孔多边形。
步骤S505,根据步骤S503的平移向量,将步骤S505生成的一般曼哈顿带孔多边形平移到初始位置。
步骤S506,根据步骤S502确定出的拉伸变换量,将步骤S505得到的一般曼哈顿带孔多边形进行压缩,以恢复原始长宽。
图11为对同一多边形近似为坐标可精确表示的曼哈顿多边形和一般曼哈顿多边形的示意图,其中1101为坐标可精确表示的曼哈顿带孔多边形;1102为一般曼哈顿带孔多边形。通过对比图11中的1101和1102可以发现,对于一般曼哈顿多边形1102来说,虽然无法保证坐标可精确表示,但该一般曼哈顿带孔多边形对原始带孔多边形的包络更加紧致,形状也更加逼近。这对于不要求坐标可精确表示的应用场景而言,是一个更佳选择。
在实际应用中,有一种稍微不常见但是仍然很重要的扩展方式:即要求带孔多边形的所有边同x正方向的夹角都是45°的整数倍,在本申请实施例中,称这样的形状为45度角曼哈顿带孔多边形。45度角曼哈顿带孔多边形依然简化了很多几何算法的实现,并提供了许多优化机会。针对45度角曼哈顿带孔多边形所做的几何算法优化,平均而言可以比针对任意角度的带孔多边形几何算法的速度快50倍。
本申请实施例再提供一种多边形处理方法,利用该多边形处理方法,可以生成45度角曼哈顿带孔多边形。在实现时,可以在步骤S405之后,可以通过下述的步骤S406至步骤S408对生成的坐标可精确表示曼哈顿带孔多边形进行修改,以下对各个步骤进行说明。
步骤S406,对坐标可精确表示曼哈顿带孔多边形的外边界以及所有内部孔洞(均为曼哈顿多边形),执行步骤S407至步骤S408。
步骤S407,对于坐标可精确表示曼哈顿带孔多边形的每条边,判断是否满足如下两个条件:1)下一条边和当前边形成了90°的左转关系;2)当前边和下一条边形成左转关系之后,当前变的起点和下一条边的终点所形成的线段不和原始带孔多边形产生交点。如果上述两个条件都满足,则删除当前边和下一条边,并插入新线段。如图12中1201右下角所示,e1和e2形成了90°的左转关系,e1的起点和e2的终点所形成的线段e3不和原始带孔多边形产生交点,因此将e1和e2删除,插入e3。
步骤S408,对于坐标可精确表示曼哈顿带孔多边形的每条边,如果它的下一条边方向不变,则生成向左转45°的斜边,长度为,以及从斜边的终点到下一条边的终点的新线段,然后判断如下两个条件:1)斜边不和带孔多边形产生交点;2)新线段不和带孔多边形产生交点。如果以上两个条件均满足,则删除下一条边,插入斜边和新线段。如图12中1201左下角所示,e4和e5方向相同,此时生成左转45°的斜边e6和连接斜边e6的终点到e5的终点的新线段e7,由于e6和e7与原始多边形均没有交点,因此删除e5,插入e6和e7。
在通过上述步骤S406至步骤S408,能够得到图12中1202所示的45度角曼哈顿带孔多边形。
通过对比图9中的902和图12中的1202可以发现,在保证坐标可精确表示的前提下,45度角曼哈顿带孔多边形对原始带孔多边形的包络更加紧致,形状也更加逼近。这对于不要求所有边必须是横平竖直的应用场景而言,是一个更好的选择。
实践结果表明,采用本申请实施例所提供的生成方法对任意角度的带孔多边形进行处理之后,可以采用浮点数计算内核来实现一系列计算几何算法并且保证结果的正确性。而在此之前,针对任意角度的带孔多边形,为了保证计算结果的正确性,必须采用精确判定精确构造的计算内核。而这种计算内核的效率比浮点数计算内核低两个数量级。在2UV展开项目的一系列工具中应用本申请实施例方法所产生的有益效果如下所述:
1)Mega和Nest工具:在计算闵可夫斯基和之前,采用本申请实施例所提供的算法首先生成坐标可精确表示曼哈顿带孔多边形,然后基于浮点数计算内核来计算闵可夫斯基和,发现运行速度可以快2个数量级。由于计算闵可夫斯基和是Mega和Nest工具中最耗时的地方,所以改进之后,这两个工具的运行效率也达到了1-2个数量级的提升。
2)Reposition工具:在计算带孔多边形的间隙之前,首先生成45度角曼哈顿带孔多边形,然后采用浮点数计算内核来生成间隙,以及计算维诺图。虽然最终生成的紧致包围盒不如原来精确,但是却可以使得Reposition工具的计算效率达到2个数量级的提升,从而满足实用要求(原来采用精确判定精确构造的计算内核来计算维诺图时,耗时过多导致Reposition工具无法满足实用需求)。
3)Shift工具:首先采用本申请实施例提供的方法生成一般曼哈顿多边形,以更好地逼近原始带孔多边形,然后基于浮点数计算内核来构造AABB树。由于所有构造和查询都不产生新的浮点数,所以可以保证计算的鲁棒性,并且使得构造效率和查询效率达到上百倍的提升。
可以理解的是,在本申请实施例中,涉及到用户信息的内容,例如,聊天对象的聊天信息、通讯内容等相关的数据,当本申请实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
下面继续说明本申请实施例提供的多边形处理装置443的实施为软件模块的示例性结构,在一些实施例中,如图2所示,存储在存储器440的多边形处理装置443中的软件模块可以包括:
第一确定模块4431,用于获取待处理的原始多边形,并确定所述原始多边形的第一目标包围盒;
第一移动模块4432,用于基于所述第一目标包围盒确定移动信息,并基于所述移动信息移动所述原始多边形和所述第一目标包围盒;
第二确定模块4433,用于确定所述移动后的原始多边形的第二目标包围盒,并将所述第二目标包围盒划分为多个正方形,所述第二目标包围盒的左下顶点为坐标原点;
多边形生成模块4434,用于将所述多个正方形中与所述移动后的原始多边形存在相交区域的正方形确定为目标正方形,基于所述目标正方形的连接边生成目标多边形,其中,所述目标多边形的连接边为所述目标正方形的部分连接边;
第二移动模块4435,用于基于所述移动信息将所述目标多边形移动至所述原始多边形对应的位置。
在一些实施例中,该第一确定模块4431,还用于:
确定需要生成顶点坐标满足精确表示条件的目标多边形时,确定所述原始多边形的坐标轴对齐包围盒;
获取预设的坐标数值精度,并基于所述坐标数值精度,对所述坐标轴对齐包围盒的对角顶点的顶点坐标进行修正,得到修正后的顶点坐标,所述修正后的顶点坐标满足所述精确表示条件;
基于所述修正后的顶点坐标,确定所述原始多边形的第一目标包围盒。
在一些实施例中,该第一移动模块4432,还用于:
基于所述第一目标包围盒的左下顶点的顶点坐标,确定移动向量;
基于所述移动向量移动所述原始多边形和所述第一目标包围盒,其中,移动后第一目标包围盒的左下顶点与坐标原点重合。
在一些实施例中,该第二确定模块4433,还用于:
确定所述第一目标包围盒的第一长度和第一宽度;
获取预设的正方形边长,所述正方形边长的小数部分能够整除所述坐标数值精度;
基于所述第一长度和所述正方形边长确定所述第二目标包围盒的第二长度,所述第二长度大于或者等于所述第一长度,且所述第二长度能够整除所述正方形边长;
基于所述第一宽度和所述正方形边长确定所述第二目标包围盒的第二宽度,所述第二宽度大于或者等于所述第一宽度,且所述第二宽度能够整除所述正方形边长;
将所述坐标原点确定为所述第二目标包围盒的左下顶点,基于所述坐标原点、所述第二长度和所述第二宽度确定所述第二目标包围盒;
将所述第二目标包围盒按照所述正方形边长划分为多个正方形。
在一些实施例中,该第一确定模块4431,还用于:
确定不需要生成顶点坐标满足精确表示条件的目标多边形时,确定所述原始多边形的坐标轴对齐包围盒;
确定所述坐标轴对齐包围盒的第三长度和第三宽度;
基于所述第三长度和所述第三宽度,确定所述原始多边形和所述坐标轴对齐包围盒的拉伸比例;
基于所述拉伸比例,将所述原始多边形和所述坐标轴对齐包围盒进行拉伸处理,得到拉伸后的多边形和拉伸后的坐标轴对齐包围盒,所述拉伸后的坐标轴对齐包围盒为正方形;
将所述拉伸后的坐标轴对齐包围盒确定为第一目标包围盒。
在一些实施例中,该装置还包括:
第三确定模块,用于基于所述拉伸比例,确定压缩比例;
压缩模块,用于基于所述压缩比例对移动至所述原始多边形对应位置的目标多边形进行压缩处理,得到压缩后的目标多边形。
在一些实施例中,该第二确定模块4433,还用于:
获取移动后的第一目标包围盒,将所述移动后的第一目标包围盒确定为所述移动后的原始多边形的第二目标包围盒;
获取预设的正方形个数,基于所述正方形个数和所述第二目标包围盒的边长,确定正方形边长;
基于所述正方形边长将所述第二目标包围盒划分为多个正方形。
在一些实施例中,该多边形生成模块4434,还用于:
确定各个正方形的中心点,将中心点位于所述移动后的原始多边形内部的正方形确定为目标正方形;
将中心点不位于所述移动后的原始多边形内部且正方形边界与所述多边形存在交点的正方形确定为目标正方形。
在一些实施例中,该多边形生成模块4434,还用于:
从所述目标正方形的连接边中确定有效连接边,其中,所述有效连接边不被两个目标正方形共用;
基于多个有效连接边,建立有效连接边的端点与有效连接边之间的映射集合;
基于所述映射集合,确定能够构成环形的目标端点,并基于所述能够构成环形的目标端点生成简单多边形;
当生成的简单多边形为至少两个时,确定至少两个简单多边形之间的包含关系;
基于所述至少两个简单多边形之间的包含关系从所述至少两个简单多边形中确定出作为新外边界的至少一个第一简单多边形;
基于第二简单多边形确定各个第一简单多边形对应的内部孔洞,所述第二简单多边形为所述至少两个简单多边形中除所述第一简单多边形之外的其它多边形;
基于所述各个第一简单多边形和所述各个第一简单多边形各自对应的内部孔洞生成目标多边形。
在一些实施例中,该多边形生成模块4434,还用于:
获取各个目标正方形的四条连接边;
依次确定每条连接边是否存在于预设的有效连接边集合中;
当确定连接边存在于有效连接边集合中,将所述连接边从所述有效连接边集合中删除;
当确定连接边不存在于所述有效连接边集合中时,将所述连接边增加至所述有效连接边集合;
将所述有效连接集合中的各个连接边确定为有效连接边。
在一些实施例中,确定需要生成顶点坐标满足精确表示条件的目标多边形时,该装置还包括:
第五确定模块,用于确定所述目标多边形的各个连接边;
第六确定模块,用于当第i条连接边与第(i+1)连接边形成了左转关系,且所述第i条连接边的起点与所述第(i+1)条连接边的终点形成的第一候选连接边与所述原始多边形没有交点,将所述第i条连接边和所述第(i+1)条连接边删除,将所述第一候选连接边确定为所述目标多边形的连接边;
连接边生成模块,用于当所述第i条连接边与所述第(i+1)条连接边的方向相同,生成第二候选连接边和第三候选连接边,所述第二候选连接边的起点为所述第i条连接边的终点,所述第二候选连接边与所述第i条连接边形成45°左转关系,所述第三候选边的起点为所述第二候选连接边的终点,所述第三候选连接边的终点为所述第(i+1)条连接边的终点,且所述第三候选连接边与所述第i条连接边等长;
第七确定模块,用于确定所述第二候选连接边和所述第三候选连接边与所述原始多边形均没有交点,将所述第(i+1)条连接边删除,将所述第二候选连接边和所述第三候选连接边确定为所述目标多边形的连接边。
需要说明的是,本申请实施例针对多边形近似装置的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的多边形处理方法。
本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的多边形处理方法,例如,如图3、图4、图5示出的多边形处理方法。
在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。
Claims (13)
1.一种多边形处理方法,其特征在于,所述方法包括:
获取待处理的原始多边形,并确定所述原始多边形的第一目标包围盒;
基于所述第一目标包围盒确定移动信息,并基于所述移动信息移动所述原始多边形和所述第一目标包围盒;
确定所述移动后的原始多边形的第二目标包围盒,并将所述第二目标包围盒划分为多个正方形,所述第二目标包围盒的左下顶点为坐标原点;
将所述多个正方形中与所述移动后的原始多边形存在相交区域的正方形确定为目标正方形,基于所述目标正方形的有效连接边生成目标多边形,所述有效连接边为不被两个目标正方形共用的连接边;
基于所述移动信息将所述目标多边形移动至所述原始多边形对应的位置;
所述基于所述第一目标包围盒确定移动信息,并基于所述移动信息移动所述原始多边形和所述第一目标包围盒,包括:基于所述第一目标包围盒的左下顶点的顶点坐标,确定移动向量;基于所述移动向量移动所述原始多边形和所述第一目标包围盒,其中,移动后第一目标包围盒的左下顶点与坐标原点重合。
2.根据权利要求1中所述的方法,其特征在于,所述确定所述原始多边形的第一目标包围盒,包括:
确定需要生成顶点坐标满足精确表示条件的目标多边形时,确定所述原始多边形的坐标轴对齐包围盒;
获取预设的坐标数值精度,并基于所述坐标数值精度,对所述坐标轴对齐包围盒的对角顶点的顶点坐标进行修正,得到修正后的顶点坐标,所述修正后的顶点坐标满足所述精确表示条件;
基于所述修正后的顶点坐标,确定所述原始多边形的第一目标包围盒。
3.根据权利要求2中所述的方法,其特征在于,所述确定所述移动后的原始多边形的第二目标包围盒,并将所述第二目标包围盒划分为多个正方形,包括:
确定所述第一目标包围盒的第一长度和第一宽度;
获取预设的正方形边长,所述正方形边长的小数部分能够整除所述坐标数值精度;
基于所述第一长度和所述正方形边长确定所述第二目标包围盒的第二长度,所述第二长度大于或者等于所述第一长度,且所述第二长度能够整除所述正方形边长;
基于所述第一宽度和所述正方形边长确定所述第二目标包围盒的第二宽度,所述第二宽度大于或者等于所述第一宽度,且所述第二宽度能够整除所述正方形边长;
将坐标原点确定为所述第二目标包围盒的左下顶点,基于所述坐标原点、所述第二长度和所述第二宽度确定所述第二目标包围盒;
将所述第二目标包围盒按照所述正方形边长划分为多个正方形。
4.根据权利要求1中所述的方法,其特征在于,所述确定所述原始多边形的第一目标包围盒,包括:
确定不需要生成顶点坐标满足精确表示条件的目标多边形时,确定所述原始多边形的坐标轴对齐包围盒;
确定所述坐标轴对齐包围盒的第三长度和第三宽度;
基于所述第三长度和所述第三宽度,确定所述原始多边形和所述坐标轴对齐包围盒的拉伸比例;
基于所述拉伸比例,将所述原始多边形和所述坐标轴对齐包围盒进行拉伸处理,得到拉伸后的多边形和拉伸后的坐标轴对齐包围盒,所述拉伸后的坐标轴对齐包围盒为正方形;
将所述拉伸后的坐标轴对齐包围盒确定为第一目标包围盒。
5.根据权利要求4所述的方法,其特征在于,在所述基于所述移动信息将所述目标多边形移动至所述原始多边形对应的位置之后,所述方法还包括:
基于所述拉伸比例,确定压缩比例;
基于所述压缩比例对移动至所述原始多边形对应位置的目标多边形进行压缩处理,得到压缩后的目标多边形。
6.根据权利要求4所述的方法,其特征在于,所述确定所述移动后的原始多边形的第二目标包围盒,并将所述第二目标包围盒划分为多个正方形,包括:
获取移动后的第一目标包围盒,将所述移动后的第一目标包围盒确定为所述移动后的原始多边形的第二目标包围盒;
获取预设的正方形个数,基于所述正方形个数和所述第二目标包围盒的边长,确定正方形边长;
基于所述正方形边长将所述第二目标包围盒划分为多个正方形。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述将所述多个正方形中与所述移动后的原始多边形存在相交区域的正方形确定为目标正方形,包括:
确定各个正方形的中心点,将中心点位于所述移动后的原始多边形内部的正方形确定为目标正方形;
将中心点不位于所述移动后的原始多边形内部且正方形边界与所述多边形存在交点的正方形确定为目标正方形。
8.根据权利要求1至6任一项所述的方法,其特征在于,所述基于所述目标正方形的有效连接边生成目标多边形,包括:
从所述目标正方形的连接边中确定有效连接边;
基于多个有效连接边,建立有效连接边的端点与有效连接边之间的映射集合;
基于所述映射集合,确定能够构成环形的目标端点,并基于所述能够构成环形的目标端点生成简单多边形;
当生成的简单多边形为至少两个时,确定至少两个简单多边形之间的包含关系;
基于所述至少两个简单多边形之间的包含关系从所述至少两个简单多边形中确定出作为目标多边形的新外边界的至少一个第一简单多边形;
基于第二简单多边形确定各个第一简单多边形对应的内部孔洞,所述第二简单多边形为所述至少两个简单多边形中除所述第一简单多边形之外的其他多边形;
基于所述各个第一简单多边形和所述各个第一简单多边形各自对应的内部孔洞生成目标多边形。
9.根据权利要求8中所述的方法,其特征在于,所述从所述目标正方形的连接边中确定有效连接边,包括:
获取各个目标正方形的四条连接边;
依次确定每条连接边是否存在于预设的有效连接边集合中;
当确定连接边存在于有效连接边集合中,将所述连接边从所述有效连接边集合中删除;
当确定连接边不存在于所述有效连接边集合中时,将所述连接边增加至所述有效连接边集合;
将所述有效连接边集合中的各个连接边确定为有效连接边。
10.根据权利要求1至3任一项所述的方法,其特征在于,确定需要生成顶点坐标满足精确表示条件的目标多边形时,所述方法还包括:
确定所述目标多边形的各个连接边;
当第i条连接边与第i+1条连接边形成了左转关系,且所述第i条连接边的起点与所述第i+1条连接边的终点形成的第一候选连接边与所述原始多边形没有交点,将所述第i条连接边和所述第i+1条连接边删除,将所述第一候选连接边确定为所述目标多边形的连接边;
当所述第i条连接边与所述第i+1条连接边的方向相同,生成第二候选连接边和第三候选连接边,所述第二候选连接边的起点为所述第i条连接边的终点,所述第二候选连接边与所述第i条连接边形成45°左转关系,所述第三候选连接边的起点为所述第二候选连接边的终点,所述第三候选连接边的终点为所述第i+1条连接边的终点,且所述第三候选连接边与所述第i条连接边等长;
确定所述第二候选连接边和所述第三候选连接边与所述原始多边形均没有交点,将所述第i+1条连接边删除,将所述第二候选连接边和所述第三候选连接边确定为所述目标多边形的连接边。
11.一种多边形处理装置,其特征在于,所述装置包括:
第一确定模块,用于获取待处理的原始多边形,并确定所述原始多边形的第一目标包围盒;
第一移动模块,用于基于所述第一目标包围盒确定移动信息,并基于所述移动信息移动所述原始多边形和所述第一目标包围盒;
第二确定模块,用于确定所述移动后的原始多边形的第二目标包围盒,并将所述第二目标包围盒划分为多个正方形,所述第二目标包围盒的左下顶点为坐标原点;
多边形生成模块,用于将所述多个正方形中与所述移动后的原始多边形存在相交区域的正方形确定为目标正方形,基于所述目标正方形的有效连接边生成目标多边形,其中,所述有效连接边为不被两个目标正方形共用的连接边;
第二移动模块,用于基于所述移动信息将所述目标多边形移动至所述原始多边形对应的位置;
所述第一移动模块,还用于:基于所述第一目标包围盒的左下顶点的顶点坐标,确定移动向量;基于所述移动向量移动所述原始多边形和所述第一目标包围盒,其中,移动后第一目标包围盒的左下顶点与坐标原点重合。
12.一种计算机设备,其特征在于,所述计算机设备包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至10任一项所述的方法。
13.一种计算机可读存储介质,存储有可执行指令,其特征在于,所述可执行指令被处理器执行时实现权利要求1至10任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211141045.1A CN115222806B (zh) | 2022-09-20 | 2022-09-20 | 多边形处理方法、装置、设备及计算机可读存储介质 |
PCT/CN2023/117252 WO2024060999A1 (zh) | 2022-09-20 | 2023-09-06 | 多边形处理方法、装置、设备、计算机可读存储介质及计算机程序产品 |
US18/598,676 US20240212236A1 (en) | 2022-09-20 | 2024-03-07 | Polygon Processing Methods and Systems |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211141045.1A CN115222806B (zh) | 2022-09-20 | 2022-09-20 | 多边形处理方法、装置、设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115222806A CN115222806A (zh) | 2022-10-21 |
CN115222806B true CN115222806B (zh) | 2022-12-09 |
Family
ID=83617495
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211141045.1A Active CN115222806B (zh) | 2022-09-20 | 2022-09-20 | 多边形处理方法、装置、设备及计算机可读存储介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240212236A1 (zh) |
CN (1) | CN115222806B (zh) |
WO (1) | WO2024060999A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115222806B (zh) * | 2022-09-20 | 2022-12-09 | 腾讯科技(深圳)有限公司 | 多边形处理方法、装置、设备及计算机可读存储介质 |
CN116502301B (zh) * | 2023-06-30 | 2024-03-22 | 深圳市华阳国际工程设计股份有限公司 | 一种dwg图纸在web端渲染时的显示扭曲修正方法 |
CN118229932B (zh) * | 2024-05-23 | 2024-08-06 | 山东捷瑞数字科技股份有限公司 | 基于三维引擎调整模型位置的方法、系统、装置、介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102629375A (zh) * | 2012-01-06 | 2012-08-08 | 中国科学院软件研究所 | 一种判定点是否位于多边形内的方法 |
CN109410213A (zh) * | 2018-10-16 | 2019-03-01 | 西安邮电大学 | 基于包围盒的多边形图元裁剪方法、计算机可读存储介质、电子设备 |
CN110322497A (zh) * | 2019-06-18 | 2019-10-11 | 中国石油大学(华东) | 一种基于三维可视化的交互式点云对象提取方法 |
CN111744199A (zh) * | 2020-06-28 | 2020-10-09 | 网易(杭州)网络有限公司 | 图像处理方法及装置、计算机可读存储介质、电子设备 |
CN111915665A (zh) * | 2020-07-21 | 2020-11-10 | 中国科学院软件研究所 | 一种计算机上使用简化求交计算的点在多边形内判定方法 |
CN113781667A (zh) * | 2021-11-10 | 2021-12-10 | 深圳大学 | 三维结构简化重建方法、装置、计算机设备和存储介质 |
CN113791914A (zh) * | 2021-11-17 | 2021-12-14 | 腾讯科技(深圳)有限公司 | 对象处理方法、装置、计算机设备、存储介质及产品 |
CN114266800A (zh) * | 2021-12-24 | 2022-04-01 | 中设数字技术股份有限公司 | 一种图形的多矩形包围盒算法及生成系统 |
CN114708358A (zh) * | 2022-05-25 | 2022-07-05 | 腾讯科技(深圳)有限公司 | 对象处理方法、装置、设备及计算机可读存储介质 |
CN114949858A (zh) * | 2022-06-06 | 2022-08-30 | 厦门飞信网络科技有限公司 | 一种游戏中角色移动的碰撞检测方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6943790B2 (en) * | 2002-10-11 | 2005-09-13 | International Business Machines Corporation | Dual mesh resampling |
CN108520121B (zh) * | 2018-03-27 | 2021-09-17 | 信利半导体有限公司 | 网格图案生成方法和装置及计算机装置和可读存储介质 |
CN112386911B (zh) * | 2020-12-08 | 2024-07-19 | 网易(杭州)网络有限公司 | 导航网格生成方法、装置、非易失性存储介质及电子装置 |
CN113590005B (zh) * | 2021-07-22 | 2023-07-14 | 齐鲁空天信息研究院 | 多边形矢量地图的标注方法、装置、电子设备及存储介质 |
CN114119804A (zh) * | 2021-09-30 | 2022-03-01 | 广东三维家信息科技有限公司 | 平面模型包围多边形生成方法、装置及家具轮廓识别方法 |
CN114219916A (zh) * | 2021-11-29 | 2022-03-22 | 长沙眸瑞网络科技有限公司 | 一种网格边界三角形面片的提取方法、装置、电子装置和存储介质 |
CN113920184B (zh) * | 2021-12-13 | 2022-03-11 | 腾讯科技(深圳)有限公司 | 多边形简化方法、装置、设备及计算机可读存储介质 |
CN114565706A (zh) * | 2022-02-25 | 2022-05-31 | 苏州易航远智智能科技有限公司 | 基于视锥的点云处理方法、装置、电子设备及存储介质 |
CN114627239B (zh) * | 2022-03-04 | 2024-04-30 | 北京百度网讯科技有限公司 | 包围盒生成方法、装置、设备及存储介质 |
CN115222806B (zh) * | 2022-09-20 | 2022-12-09 | 腾讯科技(深圳)有限公司 | 多边形处理方法、装置、设备及计算机可读存储介质 |
-
2022
- 2022-09-20 CN CN202211141045.1A patent/CN115222806B/zh active Active
-
2023
- 2023-09-06 WO PCT/CN2023/117252 patent/WO2024060999A1/zh unknown
-
2024
- 2024-03-07 US US18/598,676 patent/US20240212236A1/en active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102629375A (zh) * | 2012-01-06 | 2012-08-08 | 中国科学院软件研究所 | 一种判定点是否位于多边形内的方法 |
CN109410213A (zh) * | 2018-10-16 | 2019-03-01 | 西安邮电大学 | 基于包围盒的多边形图元裁剪方法、计算机可读存储介质、电子设备 |
CN110322497A (zh) * | 2019-06-18 | 2019-10-11 | 中国石油大学(华东) | 一种基于三维可视化的交互式点云对象提取方法 |
CN111744199A (zh) * | 2020-06-28 | 2020-10-09 | 网易(杭州)网络有限公司 | 图像处理方法及装置、计算机可读存储介质、电子设备 |
CN111915665A (zh) * | 2020-07-21 | 2020-11-10 | 中国科学院软件研究所 | 一种计算机上使用简化求交计算的点在多边形内判定方法 |
CN113781667A (zh) * | 2021-11-10 | 2021-12-10 | 深圳大学 | 三维结构简化重建方法、装置、计算机设备和存储介质 |
CN113791914A (zh) * | 2021-11-17 | 2021-12-14 | 腾讯科技(深圳)有限公司 | 对象处理方法、装置、计算机设备、存储介质及产品 |
CN114266800A (zh) * | 2021-12-24 | 2022-04-01 | 中设数字技术股份有限公司 | 一种图形的多矩形包围盒算法及生成系统 |
CN114708358A (zh) * | 2022-05-25 | 2022-07-05 | 腾讯科技(深圳)有限公司 | 对象处理方法、装置、设备及计算机可读存储介质 |
CN114949858A (zh) * | 2022-06-06 | 2022-08-30 | 厦门飞信网络科技有限公司 | 一种游戏中角色移动的碰撞检测方法 |
Non-Patent Citations (6)
Title |
---|
Approximating shapes in images with low-complexity polygons;Li M等;《Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition》;20201231;第8633-8641页 * |
Error-bounded and feature preserving surface remeshing with minimal angle improvement;Hu K等;《IEEE transactions on visualization and computer graphics》;20161231;第23卷(第12期);第2560-2573页 * |
Exact Minkowski sums of polygons with holes;Baram A等;《Computational Geometry》;20181231;第73卷;第46-56页 * |
基于矢量游走的任意非自交图形合并算法;刘术华等;《计算机工程与设计》;20121231;第33卷(第1期);第186-191页 * |
基于矩形包围盒的多边形碰撞检测算法;周之平等;《中国图象图形学报》;20041231;第9卷(第11期);第1294-1303页 * |
边界简化与多目标优化相结合的高质量四边形网格生成;徐岗等;《中国图象图形学报》;20181231;第23卷(第1期);第61-73页 * |
Also Published As
Publication number | Publication date |
---|---|
CN115222806A (zh) | 2022-10-21 |
US20240212236A1 (en) | 2024-06-27 |
WO2024060999A1 (zh) | 2024-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115222806B (zh) | 多边形处理方法、装置、设备及计算机可读存储介质 | |
US7561156B2 (en) | Adaptive quadtree-based scalable surface rendering | |
CN103761397B (zh) | 用于面曝光增材成型的3d模型切片及投影面生成方法 | |
WO2024067209A1 (zh) | 三维模型的展开方法、装置、设备、计算机可读存储介质及计算机程序产品 | |
CN116051708A (zh) | 三维场景轻量化模型渲染方法、设备、装置及存储介质 | |
CN112561788B (zh) | 一种bim模型的二维展开方法及纹理贴图方法、装置 | |
CN113628331B (zh) | 一种虚幻引擎中摄影测量模型的数据组织和调度方法 | |
CN111127649B (zh) | 构建三维体块模型的方法及装置、服务器 | |
US20220005261A1 (en) | Method for instant rendering of voxels | |
CN114241151A (zh) | 三维模型简化方法、装置、计算机设备和计算机存储介质 | |
CN109410213A (zh) | 基于包围盒的多边形图元裁剪方法、计算机可读存储介质、电子设备 | |
CN113724401A (zh) | 一种三维模型切割方法、装置、计算机设备和存储介质 | |
CN115187589B (zh) | 多边形修正及生成方法、装置、设备及可读存储介质 | |
CN115984506A (zh) | 建立模型的方法和相关装置 | |
CN104392489A (zh) | 顾及拓扑的三维地理空间实体群的线消隐方法 | |
CN116597063B (zh) | 图片渲染方法、装置、设备和介质 | |
CN111179414B (zh) | 一种地形lod的生成方法 | |
US20230351696A1 (en) | Data processing method and apparatus, device, computer-readable storage medium, and computer program product | |
Čomić et al. | Repairing 3D binary images using the FCC grid | |
CN110532670B (zh) | 一种适分析样条实体模型构建方法及系统 | |
KR20180117499A (ko) | 3차원 메쉬 데이터 간소화 방법 및 장치 | |
CN115619915A (zh) | 三维模型贴图方法、装置、存储介质及电子设备 | |
CA2357940A1 (en) | Apparatus, system, and method for simplifying annotations of a geometric surface | |
CN114239094A (zh) | 一种Revit模型的创建方法、装置、设备及存储介质 | |
CN110516284B (zh) | 房产分户图的绘制方法和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40075312 Country of ref document: HK |