通过面积法,判断点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; } }

更多相关文章

  1. Android(安卓)- Handler 、AsyncTask(二)
  2. Android开发全程记录(十四)——Android显示gif动画的方法
  3. Android(安卓)View的layout_width属性是如何解析的
  4. android中多选框bug之getCheckItemIds()
  5. Android(安卓)HandlerThread 的使用及其Demo
  6. Android(安卓)进阶学习:Android视图状态及重绘流程分析,带你一步步
  7. android 手把手教你打造万能的ListView GridView的适配器
  8. 一个 Android(安卓)任务队列的实现
  9. Android(安卓)自定义progressDialog实现

随机推荐

  1. LeetCode #27 移除元素
  2. 以B站C语言视频为基础的课后总结(一)
  3. LeetCode #26 删除排序数组中的重复项
  4. 排序算法 #5 归并排序
  5. 来自Kenneth Reitz大神的建议:避免不必要
  6. 满满的一篇,全是复杂度分析核心知识点
  7. LeetCode #80 删除排序数组中的重复项II
  8. 再聊聊Python中文社区的翻译
  9. Python对象的身份迷思:从全体公民到万物皆
  10. 数据结构 #2 36张图带你深刻理解链表