判断一个点是否在三角形里面(包括边界上),这个问题对于许多初学者来说,可谓是一头雾水,如何判断呢?
假如有四个点A(x0,y0),B(x1,y1),C(x2,y2),D(x,y),要你来判断D点是否包含在三角形ABC里面,也许你会想到用
在判断是否构成三角形 之后在用公式计算面积 但给三根线算长度太复杂了 有没有比较好点的算法 比如SIN 或者 点到直线距离.....
也就是 海伦公式 ,这也许不会很难想到毕竟在高中都学过的....
海伦公式: L = (a+b+c)/2 (L为三角形的半周长) S = sqrt(L*(L-a)*(L-b)*(L-c)) (S为其面积)
正弦公式 S = (1/2)*a*b*sinα (α是a,b两线夹角)
但是正如所说的那样,计算每一条边是比较麻烦的,而且还容易出现精度问题。而在计算中我们应该避免这一点。
那有没有其他的方法可循呢?
答案很定是有的.....
用行列式(涉及到大学线代里的知识)。
对于 A,B,C
我们有 |x0 y0 1|
2*s = |x1 y1 1|=x0*y1+y0*x2+x1*y2-(x2*y1+x1*y0+y2*x0)
|x2 y2 1|
这样我们就可以求出任意的三角形的有向面积啦!!
如果有一点D,包含于abc里面,那么很定满足下面的条件
然后三角形 Sabc =Sdab+Sdbc+Sdca;
这样所要求的判断就可以得出啦!!
另外附上一则比较重要的知识:
来自百度的....说得非常详细,就不在多说啦!!
http://hi.baidu.com/wayright/item/ad18e4c0c5446b2dee4665c9
暂且归纳这多,留着以后继续补充......
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有