SVG图形碰撞检测方法及装置制造方法及图纸

技术编号:14007963 阅读:174 留言:0更新日期:2016-11-17 06:10
本发明专利技术公开了一种SVG图形碰撞检测方法及装置。所述方法包括:在第一SVG图形上获取第一检测点集合,所述第一检测点集合用于形成内接于所述第一SVG图形中的第一多边形;在第二SVG图形上获取第二检测点集合,所述第二检测点集合用于形成内接于所述第二SVG图形中的第二多边形;判断所述第一检测点集合中是否包括落入到所述第二多边形的范围内的检测点;在确定所述第一检测点集合中包括落入到所述第二多边形的范围内的检测点时,确定所述第一SVG图形与所述第二SVG图形之间发生碰撞。由此,可以提高SVG图形碰撞检测的准确度,能够为基于SVG图形碰撞检测结果进行的后续相关处理提供准确且可靠的决策支持。

【技术实现步骤摘要】

本专利技术涉及图形碰撞检测领域,具体地,涉及一种SVG图形碰撞检测方法及装置
技术介绍
可缩放矢量图形(SVG,Scalable Vector Graphics)是基于可扩展标记语言(标准通用标记语言的子集)、用于描述二维矢量图形的一种图形格式。在实际应用中,有时需要检测两个SVG图形之间是否发生碰撞。其中,SVG图形发生碰撞的情形可以包括:两个SVG图形相交,或者一个SVG图形内嵌于另一个SVG图形之中。相关技术中,常用的SVG图形碰撞检测方法是矩形检测法。图1示出了这种检测法的示意图。如图1所示,假设要检测SVG图形101和SVG图形102之间是否发生碰撞,则基于矩形检测法,首先获取SVG图形101的外接矩形103和SVG图形102的外接矩形104,通过判断外接矩形103与外接矩形104是否为相交或者内嵌的关系,来确定SVG图形101与SVG图形102之间是否发生碰撞。然而,采用这种矩形检测法,有时会出现误检。例如,如图1所示,外接矩形103与外接矩形104之间相交于A点,通过矩形检测法,得到的结论是SVG图形101与SVG图形102之间发生碰撞。然而实际上,如图1所示,两个SVG图形之间并未发生碰撞。由此可以看出,现有的矩形检测法在SVG图形碰撞检测方面存在准确度不高的问题。
技术实现思路
本专利技术的目的是提供一种SVG图形碰撞检测方法及装置,以提高SVG图形碰撞检测的准确度。为了实现上述目的,本专利技术提供一种SVG图形碰撞检测方法,所述方法包括:在第一SVG图形上获取第一检测点集合,所述第一检测点集合用于形成内接于所述第一SVG图形中的第一多边形;在第二SVG图形上获取第二检测点集合,所述第二检测点集合用于形成内接于所述第二SVG图形中的第二多边形;判断所述第一检测点集合中是否包括落入到所述第二多边形的范围内的检测点;在确定所述第一检测点集合中包括落入到所述第二多边形的范围内的检测点时,确定所述第一SVG图形与所述第二SVG图形之间发生碰撞。可选地,所述在第一SVG图形上获取第一检测点集合的步骤包括:在所述第一SVG图形上获取第一初始位置点;以所述第一初始位置点为起点、按照第一预设步长、沿所述第一SVG图形获取多个第一中间位置点;基于所述第一初始位置点和所述多个第一中间位置点,形成所述第一检测点集合;所述在第二SVG图形上获取第二检测点集合的步骤包括;在所述第二SVG图形上获取第二初始位置点;以所述第二初始位置点为起点、按照第二预设步长、沿所述第二SVG图形获取多个第二中间位置点;基于所述第二初始位置点和所述多个第二中间位置点,形成所述第二检测点集合。可选地,所述判断所述第一检测点集合中是否包括落入到所述第二多边形的范围内的检测点的步骤包括:遍历所述第一检测点集合,判断是否存在满足第一预设条件的第一检测点,其中,所述第一预设条件为:所述第一检测点所在的水平线在该第一检测点的左侧与所述第二多边形的交点的总数为奇数,且在该第一检测点的右侧与所述第二多边形的交点的总数为奇数;当所述第一检测点集合中存在满足所述第一预设条件的第一检测点时,确定所述第一检测点集合中包括落入到所述第二多边形的范围内的检测点。可选地,所述第一检测点所在的水平线在该第一检测点的左侧与所述第二多边形的交点的总数为:所述第二多边形中位于所述第一检测点所在的垂直线的左侧、且位于所述第一检测点所在的水平线的下方的部分与该水平线的交点的总数;以及,所述第一检测点所在的水平线在该第一检测点的右侧与所述第二多边形的交点的总数为:所述第二多边形中位于所述第一检测点所在的垂直线的右侧、且位于所述第一检测点所在的水平线的下方的部分与该水平线的交点的总数。可选地,所述方法还包括:在确定所述第一检测点集合中不包括落入到所述第二多边形的范围内的检测点时,判断所述第二检测点集合中是否包括落入到所述第一多边形的范围内的检测点;在所述第二检测点集合中包括落入到所述第一多边形的范围内的检测点时,确定所述第一SVG图形与所述第二SVG图形之间发生碰撞。可选地,所述判断所述第二检测点集合中是否包括落入到所述第一多边形的范围内的检测点的步骤包括:遍历所述第二检测点集合,判断是否存在满足第二预设条件的第二检测点,其中,所述第二预设条件为:所述第二检测点所在的水平线在该第二检测点的左侧与所述第一多边形的交点的总数为奇数,且在该第二检测点的右侧与所述第一多边形的交点的总数为奇数;当所述第二检测点集合中存在满足所述第二预设条件的第二检测点时,确定所述第二检测点集合中包括落入到所述第一多边形的范围内的检测点。可选地,所述第二检测点所在的水平线在该第二检测点的左侧与所述第一多边形的交点的总数为:所述第一多边形中位于所述第二检测点所在的垂直线的左侧、且位于所述第二检测点所在的水平线的下方的部分与该水平线的交点的总数;所述第二检测点所在的水平线在该第二检测点的右侧与所述第一多边形的交点的总数为:所述第一多边形中位于所述第二检测点所在的垂直线的右侧、且位于所述第二检测点所在的水平线的下方的部分与该水平线的交点的总数。本专利技术还提供一种SVG图形碰撞检测装置,所述装置包括:第一获取模块,用于在第一SVG图形上获取第一检测点集合,所述第一检测点集合用于形成内接于所述第一SVG图形中的第一多边形;第二获取模块,用于在第二SVG图形上获取第二检测点集合,所述第二检测点集合用于形成内接于所述第二SVG图形中的第二多边形;第一判断模块,用于判断所述第一检测点集合中是否包括落入到所述第二多边形的范围内的检测点;碰撞检测模块,用于在确定所述第一检测点集合中包括落入到所述第二多边形的范围内的检测点时,确定所述第一SVG图形与所述第二SVG图形之间发生碰撞。可选地,所述第一获取模块包括:第一获取子模块,用于在所述第一SVG图形上获取第一初始位置点;第二获取子模块,用于以所述第一初始位置点为起点、按照第一预设步长、沿所述第一SVG图形获取多个第一中间位置点;第一检测点集合形成子模块,用于基于所述第一初始位置点和所述多个第一中间位置点,形成所述第一检测点集合;所述第二获取模块包括;第三获取子模块,用于在所述第二SVG图形上获取第二初始位置点;第四获取子模块,用于以所述第二初始位置点为起点、按照第二预设步长、沿所述第二SVG图形获取多个第二中间位置点;第二检测点集合形成子模块,用于基于所述第二初始位置点和所述多个第二中间位置点,形成所述第二检测点集合。可选地,所述第一判断模块包括:第一判断子模块,用于遍历所述第一检测点集合,判断是否存在满足第一预设条件的第一检测点,其中,所述第一预设条件为:所述第一检测点所在的水平线在该第一检测点的左侧与所述第二多边形的交点的总数为奇数,且在该第一检测点的右侧与所述第二多边形的交点的总数为奇数;第一确定子模块,用于当所述第一检测点集合中存在满足所述第一预设条件的第一检测点时,确定所述第一检测点集合中包括落入到所述第二多边形的范围内的检测点。可选地,所述第一检测点所在的水平线在该第一检测点的左侧与所述第二多边形的交点的总数为:所述第二多边形中位于所述第一检测点所在的垂直线的左侧、且位于所述第一检测点所在的水平线的下方的部分与该水平线的交点的总数;以及,所述第一检测点所在的水本文档来自技高网...
SVG图形碰撞检测方法及装置

【技术保护点】
一种SVG图形碰撞检测方法,其特征在于,所述方法包括:在第一SVG图形上获取第一检测点集合,所述第一检测点集合用于形成内接于所述第一SVG图形中的第一多边形;在第二SVG图形上获取第二检测点集合,所述第二检测点集合用于形成内接于所述第二SVG图形中的第二多边形;判断所述第一检测点集合中是否包括落入到所述第二多边形的范围内的检测点;在确定所述第一检测点集合中包括落入到所述第二多边形的范围内的检测点时,确定所述第一SVG图形与所述第二SVG图形之间发生碰撞。

【技术特征摘要】
1.一种SVG图形碰撞检测方法,其特征在于,所述方法包括:在第一SVG图形上获取第一检测点集合,所述第一检测点集合用于形成内接于所述第一SVG图形中的第一多边形;在第二SVG图形上获取第二检测点集合,所述第二检测点集合用于形成内接于所述第二SVG图形中的第二多边形;判断所述第一检测点集合中是否包括落入到所述第二多边形的范围内的检测点;在确定所述第一检测点集合中包括落入到所述第二多边形的范围内的检测点时,确定所述第一SVG图形与所述第二SVG图形之间发生碰撞。2.根据权利要求1所述的方法,其特征在于,所述在第一SVG图形上获取第一检测点集合的步骤包括:在所述第一SVG图形上获取第一初始位置点;以所述第一初始位置点为起点、按照第一预设步长、沿所述第一SVG图形获取多个第一中间位置点;基于所述第一初始位置点和所述多个第一中间位置点,形成所述第一检测点集合;所述在第二SVG图形上获取第二检测点集合的步骤包括;在所述第二SVG图形上获取第二初始位置点;以所述第二初始位置点为起点、按照第二预设步长、沿所述第二SVG图形获取多个第二中间位置点;基于所述第二初始位置点和所述多个第二中间位置点,形成所述第二检测点集合。3.根据权利要求1所述的方法,其特征在于,所述判断所述第一检测点集合中是否包括落入到所述第二多边形的范围内的检测点的步骤包括:遍历所述第一检测点集合,判断是否存在满足第一预设条件的第一检测点,其中,所述第一预设条件为:所述第一检测点所在的水平线在该第一检测点的左侧与所述第二多边形的交点的总数为奇数,且在该第一检测点的右侧与所述第二多边形的交点的总数为奇数;当所述第一检测点集合中存在满足所述第一预设条件的第一检测点时,确定所述第一检测点集合中包括落入到所述第二多边形的范围内的检测点。4.根据权利要求3所述的方法,其特征在于,所述第一检测点所在的水平线在该第一检测点的左侧与所述第二多边形的交点的总数为:所述第二多边形中位于所述第一检测点所在的垂直线的左侧、且位于所述第一检测点所在的水平线的下方的部分与该水平线的交点的总数;以及所述第一检测点所在的水平线在该第一检测点的右侧与所述第二多边形的交点的总数为:所述第二多边形中位于所述第一检测点所在的垂直线的右侧、且位于所述第一检测点所在的水平线的下方的部分与该水平线的交点的总数。5.根据权利要求1-4中任一项所述的方法,其特征在于,所述方法还包括:在确定所述第一检测点集合中不包括落入到所述第二多边形的范围内的检测点时,判断所述第二检测点集合中是否包括落入到所述第一多边形的范围内的检测点;在所述第二检测点集合中包括落入到所述第一多边形的范围内的检测点时,确定所述第一SVG图形与所述第二SVG图形之间发生碰撞。6.根据权利要求5所述的方法,其特征在于,所述判断所述第二检测点集合中是否包括落入到所述第一多边形的范围内的检测点的步骤包括:遍历所述第二检测点集合,判断是否存在满足第二预设条件的第二检测点,其中,所述第二预设条件...

【专利技术属性】
技术研发人员:廉帅马帅
申请(专利权)人:东软集团股份有限公司
类型:发明
国别省市:辽宁;21

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

1