分享自己推导的判断点是否落在三角形中的算法

不知道是不是和前人的基本上一样,自己随便推导了一个

基本思想:

给定三角形顶点 A B C,以及任意一点D

1、首先判断ABC要一定能保证构成三角形,只要斜率kAB != kAC即可
2、从A出发作过D的射线,如果AD不平行于BC,即kAD != kBC,则AD必可交BC于E点。
只要判断交点E位于BC之间,并且D位于AE之间即可保证D在三角形内。
即(xE-xB)(xE-xC)<0且(xE-xD)(xA-xD)<0

所以所有的判断条件为四条:
1) kAB != kAC
2) kAD != kBC
3) (xE-xB)(xE-xC)<0
4) (xE-xD)(xA-xD)<0

经过推导,最终结果如下(全部用各点间斜率和x坐标表示):

1) kAB != kAC
2) kAD != kBC
3) (kAD-kAB)(xA-xB)(kAD-kAC)(xA-xC)<0
4) (kAD-kBC)(xA-xD)(kBD-kBC)(xB-xD)<0

以上四条为D点落在三角形ABC内的充分必要条件

本条件计算量较求角度等要小,全部都是四则运算,没有涉及到任何三角公式,所以算法复杂度应该较低 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值