如何判断一个点在任意四边形内
16lz
2021-01-25
通过面积法,判断点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; } }更多相关文章
- Android(安卓)- Handler 、AsyncTask(二)
- Android开发全程记录(十四)——Android显示gif动画的方法
- Android(安卓)View的layout_width属性是如何解析的
- android中多选框bug之getCheckItemIds()
- Android(安卓)HandlerThread 的使用及其Demo
- Android(安卓)进阶学习:Android视图状态及重绘流程分析,带你一步步
- android 手把手教你打造万能的ListView GridView的适配器
- 一个 Android(安卓)任务队列的实现
- Android(安卓)自定义progressDialog实现