判断点是否在一个矩形内

本文介绍了一种判断一个点是否位于指定矩形内部的方法。通过计算向量叉乘来确定点与矩形四边的关系,进而判断点是否位于矩形内部。提供了具体的数学公式及实现代码。

判断是否在矩形内:

只需要判断该点是否在上下两条边和左右两条边之间就行。

判断一个点是否在两条线段之间夹着就转化成,判断一个点是否在某条线段的一边上,就可以利用叉乘的方向性,来判断夹角是否超过了180度 如下图

只要判断(AB X AE ) * (CDX CE)  >= 0 就说明E在AB,CD中间夹着,同理计算另两边DA和BC就可以了。

最后就是只需要判断

(AB X AE ) * (CD X CE)  >= 0 && (DA X DE ) * (BC X BE) >= 0 。

参考代码:

1     // 计算 |p1 p2| X |p1 p|
2     function GetCross(p1: Point, p2: Point, p: Point) {
3         return (p2.x - p1.x) * (p.y - p1.y) - (p.x - p1.x) * (p2.y - p1.y);
4     }
5     //判断点p是否在p1p2p3p4的正方形内
6     function IsPointInMatrix(p1: Point, p2: Point, p3: Point, p4: Point, p: Point) {
7         let isPointIn = GetCross(p1, p2, p) * GetCross(p3, p4, p) >= 0 && GetCross(p2, p3, p) * GetCross(p4, p1, p) >= 0;
8         return isPointIn;
9     }

 

转载于:https://www.cnblogs.com/fangsmile/p/9306510.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值