通过面积法,判断点P是否在四边形(A,B,C,D)内。如果在四边形内,则四边形的面积=面积(P,A,B)+面积(P,B,C)+面积(P,C,D)+面积(P,D,A),反之不在四边形内。
此处我将判断方法定义成了静态方法,方便其他类访问,代码如下:
public class IsInQuadrangle {public IsInQuadrangle() {super();}/*** 判断p是否在abcd组成的四边形内* @param a* @param b* @param c* @param d* @param p* @return 如果p在四边形内返回true,否则返回false.*/public static boolean pInQuadrangle(Point a, Point b, Point c, Point d,Point p) {double dTriangle = triangleArea(a, b, p) + triangleArea(b, c, p)+ triangleArea(c, d, p) + triangleArea(d, a, p);double dQuadrangle = triangleArea(a, b, c) + triangleArea(c, d, a);return dTriangle == dQuadrangle;}// 返回三个点组成三角形的面积private static double triangleArea(Point a, Point b, Point c) {double result = Math.abs((a.x * b.y + b.x * c.y + c.x * a.y - b.x * a.y- c.x * b.y - a.x * c.y) / 2.0D);return result;}
}
技术交流、商务合作请直接联系博主
扫码或搜索:猿说python
猿说python
微信公众号 扫一扫关注