CN108711170B - 一种基于拓扑不变性的圈地方法 - Google Patents
一种基于拓扑不变性的圈地方法 Download PDFInfo
- Publication number
- CN108711170B CN108711170B CN201810488317.2A CN201810488317A CN108711170B CN 108711170 B CN108711170 B CN 108711170B CN 201810488317 A CN201810488317 A CN 201810488317A CN 108711170 B CN108711170 B CN 108711170B
- Authority
- CN
- China
- Prior art keywords
- points
- circle
- set list
- state
- method based
- 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
Images
Classifications
-
- 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
- G06T7/62—Analysis of geometric attributes of area, perimeter, diameter or volume
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Geometry (AREA)
- Computer Vision & Pattern Recognition (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明涉及一种基于拓扑不变性的圈地方法,本发明通过将平面结构转化成为一个不变的拓扑结构,利用圈地算法,可以精确的计算出所包围元素的详细数据,解决了在平面内经过一段时间自由运动回到领地后,所圈到领地的详细数据(包括面积和坐标等)计算不准确的问题。
Description
技术领域
本发明涉及计算机图形处理技术领域,具体的说是一种基于拓扑不变性的圈地方法。
背景技术
在圈地游戏中(二维平面),从一个点出发随意运动,当回到出发点后,需要把运动路径和领地包围的区域,设置为自己领地并求出领地的面积,现有技术中,在二维平面内构建一个直角坐标系,在坐标系算出领地和路径的具体的坐标,再把满足条件(大于某个值、小于某个值)的坐标点设置成自己的领地;通过路径点的坐标,自动量取,计算方程,然后用微积分计算出面积。但会存在以下的缺陷:
1、在直角坐标系中,运动的路径是随机的,根据约束坐标满足相应的条件,无法满足极端特殊的情况,很难通过统一的坐标约束算法来算出领地,如图1所示,O1为起点,在规则的路径下,坐标系中随意一个点,当同时满足x>minX、x<maxX、y>minY、y<maxY(minX、maxX、minY、maxY四个点为当前坐标(x,y)下的路径的最大最小值)四个条件,就可以得到该点在路径范围内,也就是说这个点将是自己的领地,但这种算法无法满足如图2所示的路径,O2为起点,(x,y)满足条件x>minX、x<maxY、y>minY、y<maxY,但点(x,y)不属于领地;
2、通过微积分计算面积,首先需要计算出路径的公式,因为运动的路径完全随机,求导出来的路径的公式也只是一个近似值,这样求得的面积就会存在误差,图1与图2的路径都是随机的,无法求得精确的路径公式,所以根据微积分也无法求得准确的面积。
故针对上述技术中存在的缺点及局限性,本发明提出了一种提高准确性的基于拓扑不变性的圈地方法。
发明内容
为了解决上述现有技术中存在的问题,本发明提供一种提高准确性的基于拓扑不变性的圈地方法。
本发明解决其技术问题所采用的技术方案是:
一种基于拓扑不变性的圈地方法,包括以下步骤:
步骤一、将工作区域按网格划分,所述网格由多个六边形按顺序拼接而成,得到所述工作区域拓扑不变的结构,并将每一个网格定义为一个map结构体;
步骤二、对步骤一中的工作区域内一个闭合路径,以一个网格为单位,生成一个最小的包围盒;
步骤三、对步骤二中的闭合路径作出如下定义,闭合路径所占区域为占领地,其余区域为空地,记占领地的状态为1,空地的状态为0,将状态为0的网格放入集合list中;
步骤四、对步骤三中得到的集合list中的点进行循环遍历,若该点周围的点存在于集合list中,则从集合list中移除,添加到栈stack中,得到新的集合list,即为闭合路径的圈地区域的点;
步骤五、对步骤四中得到的新的集合list中的点的状态设置为1,得到圈地区域的详细数据。
进一步地,所述步骤一中的map结构体的属性包括拓扑关系对应的坐标(x,y)、状态以及实际坐标(worldX,worldY)。
进一步地,所述步骤三中得到集合list的具体过程为,遍历最小包围盒内所有的map结构体,若为占领地,则记状态为1,若为空地,则记状态为0,并把这个map结构放入到集合list中。
进一步地,所述步骤四中集合list中的点进行循环遍历具体过程为:
S1、选取包围盒中左下角的点加入到栈Stack中,并记该点为(xmin,ymin),进入步骤S2中执行;
S2、判断Stack是否为空,若为空,则进入步骤S4中执行,若不为空,则进入步骤S3中执行;
S3、将Stack中第一个元素出栈,若该元素在list中,则将该元素从list中移除,并将该元素的上、下、左上、左下、右上、右下的点全部加入到Stack中,进入步骤S2中执行,若该元素不在list中,则进入步骤S4中执行;
S4、终止。
更进一步地,所述左下角的点为圈地领域外且不属于闭合路径所占区域的点。
进一步地,所述步骤五中圈地区域的详细数据包括圈地的面积和坐标。
进一步地,所述每一个网格的边长的大小决定了计算的精确度,边长的取值越小,最后的结果越精确。
本发明的有益效果是:本发明通过将平面结构转化成为一个不变的拓扑结构,在直角坐标系中构建一个由正六边形平铺构成的一个拓扑结构,正六边形的边长足够小,一个正六边形就是领地和路径的一个单位,只需计算出路径所包围的正六边形元素和个数就可以正确的得到自己的领地和面积,利用圈地算法,可以精确的计算出所包围元素的详细数据,解决了在平面内经过一段时间自由运动回到领地后,所圈到领地的详细数据(包括面积和坐标等)计算不准确的问题。
附图说明
下面结合附图和实施例对本发明进一步说明。
图1是本发明背景技术中路径规则的示意图;
图2是本发明背景技术中路径不规则的示意图;
图3是本发明一个实施例中将平面转化为拓扑结构的示意图;
图4是图3中圈地路径示意图;
图5是图4生成了最小包围盒的示意图;
图6是本发明的算法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明所述的一种基于拓扑不变性的圈地方法,包括以下步骤:
步骤一、将工作区域按网格划分,所述网格由多个六边形按顺序拼接而成,得到所述工作区域拓扑不变的结构,并将每一个网格定义为一个map结构体;
步骤二、对步骤一中的工作区域内一个闭合路径,以一个网格为单位,生成一个最小的包围盒;
步骤三、对步骤二中的闭合路径作出如下定义,闭合路径所占区域为占领地,其余区域为空地,记占领地的状态为1,空地的状态为0,将状态为0的网格放入集合list中;
步骤四、对步骤三中得到的集合list中的点进行循环遍历,若该点周围的点存在于集合list中,则从集合list中移除,添加到栈stack中,得到新的集合list,即为闭合路径的圈地区域的点;
步骤五、对步骤四中得到的新的集合list中的点的状态设置为1,得到圈地区域的详细数据。
具体实施时,所述步骤一中的map结构体的属性包括拓扑关系对应的坐标(x,y)、状态以及实际坐标(worldX,worldY)。
具体实施时,所述步骤三中得到集合list的具体过程为,遍历最小包围盒内所有的map结构体,若为占领地,则记状态为1,若为空地,则记状态为0,并把这个map结构放入到集合list中。
具体实施时,所述步骤四中集合list中的点进行循环遍历具体过程为:
S1、选取包围盒中左下角的点加入到栈Stack中,并记该点为(xmin,ymin),进入步骤S2中执行;
S2、判断Stack是否为空,若为空,则进入步骤S4中执行,若不为空,则进入步骤S3中执行;
S3、将Stack中第一个元素出栈,若该元素在list中,则将该元素从list中移除,并将该元素的上、下、左上、左下、右上、右下的点全部加入到Stack中,进入步骤S2中执行,若该元素不在list中,则进入步骤S4中执行;
S4、终止。
具体实施时,所述左下角的点为圈地领域外且不属于闭合路径所占区域的点。
具体实施时,所述步骤五中圈地区域的详细数据包括圈地的面积和坐标。
具体实施时,所述每一个网格的边长的大小决定了计算的精确度,边长的取值越小,最后的结果越精确。
本发明的原理为:
在圈地游戏中,从一个点(领地)随意出发随意运动,当回到出发点后,需要把运动路径和领地所包围成的区域,设置为自己领地(并求出领地的面积)。对于一个平面,通过坐标系来只能在领地内,切割多个规则的多边形,再求出多边形的的位置和面积,但是这个多边形也有可能无法完全填充整个领地区域,那么如果事先把这个平面用正六边形铺满,得到一个完全覆盖平面的拓扑结构。当正六边形的边长足够小,那么领地的一个元素就可以是一个正六边形了,当回到领地中,只需要计算出被路径圈起来的正六变形就可以了,然后就可以得到相应的数据。
作为本发明一个较佳的实施例:
1、如图3所示,先把一个平面划分成多个六边形按顺序平成,得到一个拓扑不变的结构,每个格子定义一个map结构体;
2、如图4所示,从图中的任意一个格子的出发,做自由运动,当回到出发点后,其中,定义A点为出发点,经过自由运动后,回到出发点,整个区域分成了圈内的B区域和C区域;
3、如图5所示,以一个格子为单位生成一个最小包围盒,整个平面分成了两个状态,路径的状态为1,空白区域(B区域、C区域)的状态为0。状态为0的格子统一存放在一个集合list里。取左下角的一个点(必是C区域中的点)放在栈stack中,再利用本发明技术方案中的算法,得到新的集合list,这个集合里面剩下的元素全部都属于B区域,当格子的边长足够小,就可以得到精确的数据了。比如:坐标、面积(B区域所有元素的个数乘以单个六边形的面积)。
本发明的算法流程如图6所示:
a、工作路径回到出发原点后,生成最小包围盒区域(xmin,ymin,xmax,ymax),从最小的点(xmin,ymin)开始进行遍历,进入步骤b;
b、取左下角点的map,如果map是路径,则设置map的状态type为1,如果map不是路径,则设置map的状态type为0并把map加入到集合list中,进入步骤c;
c、如果Y小于ymax,则Y的值加1并返回步骤b,反之则进入步骤d;
d、如果X小于xmax,则重置Y的值为ymin,X的值加1,进入步骤b,反之则进入步骤e;
e、取左下角点的map1,在stack中加入map1,如果stack里元素个数大于0,则进入步骤f,反之进入步骤g;
f、从stack中取出一个元素map2,如果list中包含map2,则从list中移除map2,把map2中的左下、左上、上、下、右上、右下的点加入到stack中,并继续进入步骤e中进行遍历;
g、终止,list中剩下的点都是B区域的点,把list的元素的type设置为1,结束。
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
Claims (6)
1.一种基于拓扑不变性的圈地方法,其特征在于,包括以下步骤:
步骤一、将工作区域按网格划分,所述网格由多个六边形按顺序拼接而成,得到所述工作区域拓扑不变的结构,并将每一个网格定义为一个map结构体;
步骤二、对步骤一中的工作区域内一个闭合路径,以一个网格为单位,生成一个最小的包围盒;
步骤三、对步骤二中的闭合路径作出如下定义,闭合路径所占区域为占领地,其余区域为空地,记占领地的状态为1,空地的状态为0,将状态为0的网格放入集合list中;
步骤四、对步骤三中得到的集合list中的点进行循环遍历,若该点周围的点存在于集合list中,则从集合list中移除,添加到栈stack中,得到新的集合list,即为闭合路径的圈地区域的点;
步骤五、对步骤四中得到的新的集合list中的点的状态设置为1,得到圈地区域的详细数据;
所述步骤四中集合list中的点进行循环遍历具体过程为:
S1、选取包围盒中左下角的点加入到栈Stack中,并记该点为(xmin,ymin),进入步骤S2中执行;
S2、判断Stack是否为空,若为空,则进入步骤S4中执行,若不为空,则进入步骤S3中执行;
S3、将Stack中第一个元素出栈,若该元素在list中,则将该元素从list中移除,并将该元素的上、下、左上、左下、右上、右下的点全部加入到Stack中,进入步骤S2中执行,若该元素不在list中,则进入步骤S4中执行;
S4、终止。
2.根据权利要求1所述的一种基于拓扑不变性的圈地方法,其特征在于:所述步骤一中的map结构体的属性包括拓扑关系对应的坐标(x,y)、状态以及实际坐标(worldX,worldY)。
3.根据权利要求1所述的一种基于拓扑不变性的圈地方法,其特征在于:所述步骤三中得到集合list的具体过程为,遍历最小包围盒内所有的map结构体,若为占领地,则记状态为1,若为空地,则记状态为0,并把这个map结构放入到集合list中。
4.根据权利要求1所述的一种基于拓扑不变性的圈地方法,其特征在于:所述左下角的点为圈地领域外且不属于闭合路径所占区域的点。
5.根据权利要求1所述的一种基于拓扑不变性的圈地方法,其特征在于:所述步骤五中圈地区域的详细数据包括圈地的面积和坐标。
6.根据权利要求1所述的一种基于拓扑不变性的圈地方法,其特征在于:所述每一个网格的边长的大小决定了计算的精确度,边长的取值越小,最后的结果越精确。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810488317.2A CN108711170B (zh) | 2018-05-21 | 2018-05-21 | 一种基于拓扑不变性的圈地方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810488317.2A CN108711170B (zh) | 2018-05-21 | 2018-05-21 | 一种基于拓扑不变性的圈地方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108711170A CN108711170A (zh) | 2018-10-26 |
CN108711170B true CN108711170B (zh) | 2022-04-08 |
Family
ID=63869300
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810488317.2A Active CN108711170B (zh) | 2018-05-21 | 2018-05-21 | 一种基于拓扑不变性的圈地方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108711170B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103065319A (zh) * | 2012-12-31 | 2013-04-24 | 上海同岩土木工程科技有限公司 | 一种空间多连通域的封闭面自动搜索方法 |
WO2015106021A1 (en) * | 2014-01-09 | 2015-07-16 | Siemens Product Lifecycle Management Software Inc. | Method for structure preserving topology optimization of lattice structures for additive manufacturing |
CN106709969A (zh) * | 2016-12-21 | 2017-05-24 | 河南理工大学 | 一种基于分区的Delaunay三角网生长算法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2530220C1 (ru) * | 2013-03-18 | 2014-10-10 | Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." | Система и способ для автоматической регистрации анатомических точек в объемных медицинских изображениях |
-
2018
- 2018-05-21 CN CN201810488317.2A patent/CN108711170B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103065319A (zh) * | 2012-12-31 | 2013-04-24 | 上海同岩土木工程科技有限公司 | 一种空间多连通域的封闭面自动搜索方法 |
WO2015106021A1 (en) * | 2014-01-09 | 2015-07-16 | Siemens Product Lifecycle Management Software Inc. | Method for structure preserving topology optimization of lattice structures for additive manufacturing |
CN106709969A (zh) * | 2016-12-21 | 2017-05-24 | 河南理工大学 | 一种基于分区的Delaunay三角网生长算法 |
Also Published As
Publication number | Publication date |
---|---|
CN108711170A (zh) | 2018-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11107272B2 (en) | Scalable volumetric 3D reconstruction | |
US11302060B2 (en) | Method and system for vector-raster overlay analysis of ground surface image area based on edge clipping | |
US20200192399A1 (en) | Method for traversing a subarea, method for cleaning, and cleaning robot thereof | |
CN102542035B (zh) | 基于扫描线法的多边形栅格化并行转换方法 | |
CN102306180B (zh) | 一种基于海量激光雷达栅格点云数据的建模方法 | |
CN102565810B (zh) | 一种遥感影像上土地利用地物边界轮廓提取方法 | |
CN104574449B (zh) | 基于dem的投影面积计算方法 | |
CN105469445B (zh) | 一种步长可变地图生成方法 | |
CN102034104A (zh) | 三维点云中基于随机采样一致性的特征线检测方法 | |
CN108917769A (zh) | 一种基于九叉树的机器人自适应栅格地图创建方法 | |
CN110322497A (zh) | 一种基于三维可视化的交互式点云对象提取方法 | |
CN109410290A (zh) | 确定作业区域边界的方法和装置 | |
CN101916458A (zh) | 地理模型的多尺度估算预测方法 | |
WO2024067716A1 (zh) | 一种网格重建方法、装置、设备和存储介质 | |
CN108711170B (zh) | 一种基于拓扑不变性的圈地方法 | |
CN116721228B (zh) | 一种基于低密度点云的建筑物高程提取方法及系统 | |
CN108744520A (zh) | 确定游戏模型摆放位置的方法、装置和电子设备 | |
CN111599015B (zh) | 一种约束条件下的空间多边形网格化填充方法和装置 | |
Zhao et al. | A new k nearest neighbours algorithm using cell grids for 3d scattered point cloud | |
CN116310197A (zh) | 一种非遗建筑物的三维模型构建方法、装置及存储介质 | |
CN114187423A (zh) | 用于三维模拟试验中围岩裂隙重构方法、电子设备及存储介质 | |
CN112999656A (zh) | 一种光照探针的处理方法、装置、电子设备及存储介质 | |
US20190286770A1 (en) | Computer-readable recording medium storing divided region generating program, divided region generating apparatus, and divided region generating method | |
CN112052489B (zh) | 一种户型图生成方法及系统 | |
CN103678588A (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 |