一种判断目标点是否位于多边形区域内部的方法

文档序号:6379131阅读:490来源:国知局
专利名称:一种判断目标点是否位于多边形区域内部的方法
—种判断目标点是否位于多边形区域内部的方法技术领域
计算机图形技术和计算机几何技术领域,特别涉及一种判断目标点是否位于多边形区域内部的方法。
技术背景
点是否位于多边形内的判断计算,是计算几何中的一个基本问题,这方面的方法在计算机图形学、模糊识别、地理信息系统等众多领域有着广泛的应用。
传统的判定点是否位于多边形内的方法有如下几种面积法多边形的所有边和目标点组成的三角形面积和是否等于总的多边形面积,如果相等,则在内部。反之在外部。这种方法计算量较大,用到的主要计算是查乘。
夹角和法判断所有边和目标点的夹角和,如果夹角和为360度,则在多边形内部。计算量比面积法稍小,用到主要是点乘和求模计算。
引射线法。从目标点出发引一条射线,判断这条射线和所有边的交点数目。如果有奇数个交点,则说明在内部,如果有偶数个交点,则说明在外部。此方法存在较多的特殊情况处理,如经过顶点或者与边线重叠等。
在中国专利CN200710121506. 8中公开了一种判定方法,其先对多边形进行凸剖分,并建立二叉树来管理这些凸边行,然后,根据被检测点的坐标位置,对所建立的二叉树进行考察,以找到该二叉树的一叶节点对应的凸多边形,再检测该点是否位于这个凸变形内;这种方法在多边形的预处理的时间、空间需求和判断计算等各个方面具有相同的复杂度现有技术存在以下的问题1、判断方法步骤复杂、繁琐、不够简易;2、空间需求比较大、计算速度较慢;3、判断点是否在多边形内的准确度不高。发明内容
为了克服现有技术的缺陷,本发明公开了一种判断目标点是否位于多边形区域内部的方法,这种定位方法判断方法计算量小,准确度高,易于实现。
本发明公开了以下技术方案一种判断目标点是否位于多边形区域内部的方法,包括如下步骤51:定义构造规则目标点为PO,多边形各顶点以顺时针方向依次为Pl,P2,P3,…, P1-1, Pi, Pi+Ι,…,Pn ;52:遍历所有的边,如果目标点PO在边的法向投影范围,则计算目标点PO与该边的距离DOi,否则计算目标点PO与该边两个顶点的最小距离DOi,记录最小距离,以及对应的边或者顶点;如果目标点PO距离边最近,那么选择两个顶点中的任意一个为Pi,如果目标点距离顶点最近,那么以该顶点为Pi ;同时以Pi点水平向右为X正向;53:计算角度a)Ail= Z XPiP1-1,Ail为PiX以Pi为中心、顺时针旋转到P1Ph所形成的角度;b)Ai2=Z XPiPi+1, Ai2为PiX以Pi为中心、顺时针旋转到PiPi+Ι所形成的角度;c)Aitl= Z XPiP0, Ai0为PiX以Pi为中心、顺时针旋转到PiP0所形成的角度;54:通过计算三个角度之间的关系来判断点的位置a)如果An>Ai2,且Ail >Ai0> Ai2,则目标点PO在多边形区域内,否则在多边形区域外;b)如果An〈Ai2,且Aitl <Α^Α 0> Ai2,则目标点PO在多边形区域内,否则在多边形区域外;c)Ail=Ai0或Ai2=Aitl,则判定为在多边形边线上。
较佳地,所述的判断目标点是否位于多边形区域内部的方法,还包括S5 :如果多边形为中间镂空或者为环形,此多边形包括外圈多边形和内圈多边形,则满足目标点PO在外圈多边形内部,且目标点PO在内圈多边形外部,否则目标点PO在多边形区域外。
较佳地,所述的判断目标点是否位于多边形区域内部的方法,其S2中如果有若干个顶点距离PO相等,可选取其中任意一顶点为Pi。
较佳地,所述的判断目标点是否位于多边形区域内部的方法,其S2中如果有若干个边距离PO相等,可选取其中任意边的任意一顶点为Pi。 与现有技术相比,本发明的有益效果如下1、方法步骤简单操作方便; 2、空间需求量小、计算速度较快;3、判断点是否在多边形内的准确度高。


图1为本发明具体实施例判断方法的结构示意图;图2a为本发明具体实施例一目标点在凸多边形内的示意图;图2b为本发明具体实施例一目标点在凹多边形内的示意图;图2c为本发明具体实施例一目标点在楔形凹边形内的示意图;图2d为本发明具体实施例一目标点在凸多边形外的示意图;图2e为本发明具体实施例一目标点在凹多边形外的示意图;图2f为本发明具体实施例一目标点在楔形凹边形外的示意图;图3a为本发明具体实施例二目标点在凸多边形内的示意图;图3b为本发明具体实施例二目标点在凹多边形内的示意图;图3c为本发明具体实施例二目标点在楔形凹边形内的示意图;图3d为本发明具体实施例二目标点在凸多边形外的示意图;图3e为本发明具体实施例二目标点在凹多边形外的示意图;图3f为本发明具体实施例二目标点在楔形凹边形外的示意图;图4a为本发明具体实施例三目标点在凸多边形上的示意图;图4b为本发明具体实施例三目标点在凹多边形上的示意图;图4c为本发明具体实施例三目标点在楔形凹边形上的示意图;图5为本发明具体实施例四目标点在特殊多边形内的示意具体实施例方式本发明提供一种判断目标点是否位于多边形区域内部的方法,如图1,包括如下步骤 一种判断目标点是否位于多边形区域内部的方法,其特征在于,包括如下步骤51:定义构造规则目标点为PO,多边形各顶点以顺时针方向依次为Pl,P2,P3,…, P1-1, Pi, Pi+Ι,…,Pn ;52:遍历所有的边,如果目标点PO在边的法向投影范围,则计算目标点PO与该边的距离DOi,否则计算目标点PO与该边两个顶点的最小距离DOi,记录最小距离,以及对应的边或者顶点;如果目标点PO距离边最近,那么选择两个顶点中的任意一个为Pi,如果目标点距离顶点最近,那么以该顶点为Pi ;同时以Pi点水平向右为X正向;53:计算角度a)Ail= Z XPiP1-1,Ail为PiX以Pi为中心、顺时针旋转到P1Ph所形成的角度;b)Ai2=Z XPiPi+1, Ai2为PiX以Pi为中心、顺时针旋转到PiPi+Ι所形成的角度;c)Aitl= Z XPiP0, Ai0为PiX以Pi为中心、顺时针旋转到PiP0所形成的角度;54:通过计算三个角度之间的关系来判断点的位置a)如果An>Ai2,且Ail >Ai0> Ai2,则目标点PO在多边形区域内,否则在多边形区域外; b)如果An〈Ai2,且Aitl <Α^Α 0> Ai2,则目标点PO在多边形区域内,否则在多边形区域外;c)Ail=Aitl或Ai2=Aitl,则判定为在多边形边线上;如果多边形为中间镂空或者为环形,此多边形包括外圈多边形和内圈多边形,则满足目标点PO在外圈多边形内部,且目标点PO在内圈多边形外部,否则目标点PO在多边形区域外。
所述S2中如果有若干个顶点距离PO相等,可选取其中任意一顶点水平向右为X 正向或者S2中如果有若干个边距离PO相等,可选取其中任意边的任意一顶点为Pi。
下方结合附图和具体实施例对本发明做进一步的描述实施例一如图2a,P2是离目标点PO最近的点,水平向右为X正向,按顺时针方向,则P2到上一参考点Pl的角度为An= ZXP2P1 (ZXP2P1的含义是P2X以P2为中心,顺时针旋转到P2P1所形成的角,下面角度含义一样,不再赘述),P2到下一参考点P3的角度为 Ai2= Z XP2P3 ;P2 到 PO 的角度为Ai0= Z XP2P0从图2a可以看出上述三个角An>Ai2,且Ail >Ai0> Ai2,所以目标点PO在多边形区域内; 对于凹多边形也适用此判定条件,如图2b ;同理楔形凹边形也适应此判定条件,如图2c。
如图2d,P2是离目标点PO最近的点,水平向右为X正向,则P2到上一参考点Pl 的角度为=Ail= Z XP2P1 ;P2到下一参考点P3的角度为=Ai2= Z XP2P3 ;而P2到PO的角度为Ai0= Z XP2P0。
从图2d可以看出上述三个角An>Ai2,且Aitl >An> Ai2,所以目标点PO在多边形区域外;对于凹多边形也适用此判定条件,如图2e;同理对于楔形凹边形也适应此判定条件, 如图2f。
实施例二如图3a,P4是离目标点PO最近的点,水平向右为X正向,按顺时针方向,则P4到上一参考点P3的角度为=Ail= Z XP4P3 ;P4到下一参考点P5的角度为=Ai2= Z XP4P5 ;P4到PO 的角度为Ai0= ZXP4P0.
从图3a可以看出上述三个角An〈 Ai2,且Ai(l> Ai2,所以目标点PO在多边形区域内。对于凹多边形也适用此判定条件,如图3b ;同理也适用于楔形凹边形,如图3c。
如图3d,P4是离目标点PO最近的点,水平向右为X正向,按顺时针方向,则P4到上一参考点P3的角度为=Ail= Z XP4P3 ;P4到下一参考点P5的角度为=Ai2= Z XP4P5 ;而P4 到PO的角度为Ai0= Z XP4P0从图3d可以看出上述三个角An〈 Ai2,且An〈 Ai0< Ai2,所以目标点PO在多边形区域外;对于凹多边形也适用此判定条件,如图3e;同理也适用楔形凹边形,如图3f。
实施例三如图4a,假设P2离目标点PO最近的点,水平向右为X正向,按顺时针方向,则P2到上一参考点Pl的角度为=Ail= Z XP2P1 ;P2到下一参考点P3的角度为=Ai2= Z XP2P3 ;P2到PO 的角度为Ai0= ZXP2P0o
从图4a可以看出上述三个角An>Ai2,且Aitl=Ail,所以目标点PO在多边形边线上; 对于凹多边形也适用此判定条件,如图4b ;同理也适用于楔形凹边形,如图4c。
实施例四如图5,此为特殊例,多边形为中间镂空或者环形,环形可以视为两个大小不同的多边形嵌套组合,所以判断目标点PO是否在环形内,需满足以下条件目标点PO在外圈多边形内部,且目标点PO在内圈多边形外部。
如图5,外圈距离目标点PO最近的顶点为P6,那么Ail= Z XP6P5 ;Ai2= Z XP6P1 ; Ai0= Z XP6P0。
由图可知,An〈Ai2,且Ai(l〈An,根据判定条件2,目标点在大圈多边形区域内部。
内圈距离目标点PO 最近的顶点为 P5’JP4An,= ZX’P5’P4’;Ai2,= ZX’P5’Pl’; Ai0’= Z V P5,PO,。
由图可知,An,<Ai2,,且An’ <Ai(l,<Ai2,,根据判定条件2,目标点在小圈多边形区域外部。
综合以上情况,可以判断目标点PO在环形区域内部。
本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式
。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。
权利要求
1.ー种判断目标点是否位于多边形区域内部的方法,其特征在于,包括如下步骤 51:定义构造规则目标点为PO,多边形各顶点以顺时针方向依次为Pl,P2,P3,…,Pi-1, Pi, Pi+Ι,…,Pn ; 52:遍历所有的边,如果目标点PO在边的法向投影范围,则计算目标点PO与该边的距离DOi,否则计算目标点PO与该边两个顶点的最小距离DOi,记录最小距离,以及对应的边或者顶点;如果目标点PO距离边最近,那么选择两个顶点中的任意ー个为Pi,如果目标点距离顶点最近,那么以该顶点为Pi ;同时以Pi点水平向右为X正向; 53:计算角度 a)Ail= Z XPiPi-I,Ail为PiX以Pi为中心、顺时针旋转到P1Ph所形成的角度; b)Ai2=Z XPiPi+1, Ai2为PiX以Pi为中心、顺时针旋转到PiPi+Ι所形成的角度; c)Aitl= Z XPiP0, Ai0为PiX以Pi为中心、顺时针旋转到PiP0所形成的角度; 54:通过计算三个角度之间的关系来判断点的位置 a)如果An>Ai2,且Ail >Ai0> Ai2,则目标点PO在多边形区域内,否则在多边形区域外; b)如果An〈Ai2,且Ai0 <Αη或Ai0> Ai2,则目标点PO在多边形区域内,否则在多边形区域外; c)Ail=Ai0或Ai2=Aitl,则判定为在多边形边线上。
2.根据权利要求I所述的多边形区域内部的方法,其特征在于,还包括S5:如果多边形为中间镂空或者为环形,此多边形包括外圈多边形和内圈多边形,则满足目标点PO在外圈多边形内部,且目标点PO在内圈多边形外部,否则目标点PO在多边形区域外。
3.根据权利要求I所述的多边形区域内部的方法,其特征在于,所述S2中如果有若干个顶点距离PO相等,可选取其中任意一顶点为Pi。
4.根据权利要求I所述的多边形区域内部的方法,其特征在于,所述S2中如果有若干个边距离PO相等,可选取其中任意边的任意一顶点为Pi。
全文摘要
本发明公开了一种判断目标点是否位于多边形区域内部的方法,包括S1定义构造规则目标点为P0,多边形各顶点以顺时针方向依次连接,形成多边形,各顶点依次为P1,P2,P3,…,Pi-1,Pi,Pi+1,…,Pn;S2遍历所有的边,如果目标点P0在边的法向投影范围,则计算P0与该边的距离D0i,否则计算P0与该边两个顶点的最小距离D0i,记录最小距离,以及对应的边或者顶点;如果目标点P0距离边最近,那么选择两个顶点中的任意一个为Pi,如果目标点距离顶点最近,那么以该顶点为Pi;并以Pi点水平向右为X正向;S3计算角度;S4通过计算三个角度之间的关系来判断点的位置;这种判断方法步骤简单、计算速度较快;而且能准确判断点是否在多边形内。
文档编号G06T7/60GK102982562SQ201210398610
公开日2013年3月20日 申请日期2012年10月19日 优先权日2012年10月19日
发明者李健, 刘中秋 申请人:浙江中正智能科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1