如果判断点是否在凸多边形内,则有多种方法,方法简单,计算速度也快,直接使用物理引擎做判断也行
但实际问题中遇到的多边形不一定是凸多边形,它可能是凹边行或者复合多边形判断一个点在多边形内或多边形外,射线法是个不错的选择

射线法: ,判断一点是否在多边形内或多边形外,只要从这点起,作一条射线,例如,沿x(或y)向直到负无穷,若与其相交的边是奇,该点位于多边形内;若为偶数,则点位于多边形外。
如下图:

图中,沿P作水平向左的射线,若P在多边形内部,则射线与多边形的交点数为奇数;若P在多边形外部,则交点个数为偶数(包含0)。因此,顺序考虑多边形的每条边,求出交点数目,可判断点是否位于多边形内。特殊情况。如边(P1,P2):
1)若射线恰好穿过P1或者P2,那么这个交点会被算作2次,解决方案是,若P的纵坐标与P1,P2中的纵坐标相同,则将忽略此情况
2)若射线水平,则射线可能与其无交点,可能有无数个,则忽略此情况。
3)若射线竖直,且P的横坐标小于P1,P2的横坐标,则必然相交。
4)在判断相交之前,可先判断P是否在边(P1,P2)的上面,若在,可直接得到结论:P在多边形内部

计算x轴坐标

计算交点逻辑

tanα = b /  c;
tanα = d / a;
d = b*a / c;

今天下午偶然瞄了一眼编程之美, 看到了一个问题, 4.4 是否 多边形 内. 为什么关注这个问题呢? 因为在今年给中科院保送研究生机试出题的时候,我也出了一道这样的题目. 看了编程之美的解答之后, 感觉作者没有把这个问题讲清楚, 所以来写这样一个东西. <编程之美>的两种解答方案都很直观, 一种是 秦九韶海伦公式来做面积 判断 , 一种是 常用的 判断 是否 在三角形内. 为什么说... 面积和判别法: 判断 目标 多边形 的每条边组成的三角形面积和 是否 等于该 多边形 ,相等则在 多边形 内部。 夹角和判别法: 判断 目标 与所有边的夹角和 是否 为360度,为360度则在 多边形 内部。 引射线法:从目标 出发引一条射线,看这条射线和 多边形 所有边的交 数目。如果有奇数个交 ,则说明在内部,如果有偶数个交 ,则说明在外部 首先讲解下射线法的原理 情况一,显示了具有 14 条边的严重 多边形 的典型情况 上图 显示了具有 14 条边的严重 多边形 的典型情况 红 是需要 (1)面积和判别法: 判断 目标 多边形 的每条边组成的三角形面积和 是否 等于该 多边形 ,相等则在 多边形 内部。 (2)夹角和判别法: 判断 目标 与所有边的夹角和 是否 为360度,为360度则在 多边形 内部。 (3)引射线法:从目标 出发引一条射线,看这条射线和 多边形 所有边的交 数目。如果有奇数个交 ,则说明在内部,如果有偶数个交 ,则说明在外部。 本文介绍的是引射... 在GIS(地理信息管理系统)中, 判断 一个坐标 是否 多边形 内部是个经常要遇到的问题。乍听起来还挺复杂。根据W. Randolph Franklin 提出的PNPoly算法,只需区区几行代码就解决了这个问题。 假设 多边形 的坐标存放在一个数组里,首先我们需要取得该数组在横坐标和纵坐标的最大值和最小值,根据这四个 算出一个四边型,首先 判断 目标坐标 是否 在这个四边型之内,如果在这个四边型之外,那可以... 我们先 判断 一个 是否 在一个三角形内部。一个三角形在一个坐标系(譬如由A、B、C三 组成)中,我们可以通过计算它的有向面积来 判断 A、B、C三 在坐标系中的顺逆。当然,在此之前我们必须先订立一套计算面积的规则。比如,在笛卡尔坐标系中,我们利用: S=((A.x-B.x)*(A.y+B.y)+(B.x-C.x)*(B. 将 多边形 划分为若干区域,二分地去查询落在哪个子区域, 判断 是落在哪个子区域内后 判断 是否 落在该区域的三角形内,若是则在 多边形 内,若不是则在 多边形 外。同上面三角形的 判断 方法一样,对凸 多边形 逆时针取向量,那么P 必然在这些向量的左侧。同上面三角形的 判断 方法一样,可以将 P与 多边形 所有顶 连线构成子三角形, 判断 这些子三角形的面积之和 是否 等于 多边形 面积之和。同上面三角形的 判断 方法一样,将 多边形 划分成若干三角形,然后用重心坐标性质 判断 。将P 多边形 各个顶 连线,环绕 多边形 一周,内角和为360°说明在 多边形 内。... 项目中遇到一个求两个任意 多边形 重叠面积的问题,乍一想感觉问题太简单了;然后就出现了下图的尴尬情况:这玩意不好求啊,网上搜索找到一个方案采用了Sutherland-Hodgeman-Polygon-Clipping Algorihtm(自行了解),主要解决了凸多变形重叠区域的contour的寻找,算法的思想就是沿着一个凸 多边形 的边裁切, 直到将所有的凸 多边形 的边全部裁切完成。但是面对非凸 多边形 而且有多个闭合的相交区域的情况的时候,一条边的裁切可能会将另一条边裁掉,因此算法不适用。 题目地址:http://www.cnblogs.com/try86/archive/2012/04/22/2465416.html 这一题,若 在边上,也将 看做成 多边形 内。 对于凸 多边形 有很多种方法 判断 多边形 内,但若是 多边形 ,则靠谱的方法不多,可以谷歌一下。 1)水平/垂直交叉 数判别法(适用于任意 多边形 包括 凸边形) 注意到如果从P作水平向左的射线的话,如果P在 多边形 内部,那么这