首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

怎么判断一个点在任意四边形肉

2012-09-29 
如何判断一个点在任意四边形肉。? 通过面积法,判断点P是否在四边形(A,B,C,D)内。?? 如果在四边形内则,? 四边

如何判断一个点在任意四边形肉。

? 通过面积法,判断点P是否在四边形(A,B,C,D)内。

?? 如果在四边形内则,? 四边形的面积=面积(P,A,B)+面积(P,B,C)+面积(P,C,D)+面积(P,D,A)

?? 反之不在四边形内。

?????????????????????

public class Quadrangle {/** * 点是否在四边形内 * @param a * @param b * @param c * @param d * @param p * @return */public static boolean pInQuadrangle(Point a, Point b, Point c,Point d,Point p){Log.d("Walk Game","Quadrangle:"+ "new Point("+a.x+","+a.y+"),"+ "new Point("+b.x+","+b.y+"),"+ "new Point("+c.x+","+c.y+"),"+ "new Point("+d.x+","+d.y+"),"+ "new Point("+p.x+","+p.y+"),");  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;}public static boolean pInQuadrangle(float[] px,float[] py,float x,float y){Point a = new Point((int)px[0],(int)py[0]); Point b = new Point((int)px[1],(int)py[1]); Point c = new Point((int)px[2],(int)py[2]); Point d = new Point((int)px[3],(int)py[3]); Point p = new Point((int)x,(int)y); Log.d("Walk Game","Quadrangle:"+ "new Point("+a.x+","+a.y+"),"+ "new Point("+b.x+","+b.y+"),"+ "new Point("+c.x+","+c.y+"),"+ "new Point("+d.x+","+d.y+"),"+ "new Point("+p.x+","+p.y+"),");  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 楼 稻-草 2010-01-30   用射线发,  JDK中有源码,在Polygon.contains类中,可以判断任意凸多边形 2 楼 ansili 2010-02-01   稻-草 写道用射线发,  JDK中有源码,在Polygon.contains类中,可以判断任意凸多边形
  你是指PC平台的JDK吗?
如果是的话,之前我和你的想法一样,想把PC平台的Polygon移到android中.
那里面关系到很多类,我的技术太烂.粗略做了一下,没成功放弃了. 3 楼 稻-草 2010-02-01   Polygon.contains 这个方法是完全可移植的,
因为我就是把这个方法考过来,稍微改改,就可用了,但是没看懂。

热点排行