判定一个点是否在三角形内

三角形的面积公式如下:


在此处使用一种常见且简便的方法:如果三角形PAB,PAC和PBC的面积之和与三角形ABC的面积相等,即可判定点P在三角形ABC内(包括在三条边上)
可知,该方法的关键在于如何计算三角形的面积。幸运地是,当知道三角形顶点(A,B和C)的坐标((Ax, Ay),(Bx, By)和(Cx, Cy))之后,即可计算出其面积:

=  |(Ax * By + Bx * Cy + Cx * Ay - Ay * Bx - By * Cx - Cy * Ax) /  2|

代码如下:

public final class Demo {
	
	
	public static  boolean isInTriangle(POINT A, POINT B, POINT C, POINT P)
	{
		if(A.x<0||A.x>99||B.x<0||B.x>99||C.x<0||C.x>99||
				A.y<0||A.y>99||B.y<0||B.y>99||C.y<0||C.y>99)
			return false;
		/*在这里完成代码*/
		double d1=area(A,B,C);
		double d2=area(A,B,P)+area(A,C,P)+area(B,C,P);
		if(Math.abs(d1-d2)<0.0001)                      //一定要记得加绝对值,否则不对,由于浮点数的计算存在着误差,
			                                                                            //故指定一个足够小的数,用于判定两个面积是否(近似)相等。
		return true;
		return false;
	}

	private static double area(POINT a, POINT b, POINT c) {
		
		return Math.abs(0.5*(a.x*b.y+b.x*c.y+c.x*a.y-a.y*b.x-b.y*c.x-c.y*a.x));
	}
}



转载于:https://www.cnblogs.com/berylqliu/p/6261492.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值