判断点是否在一个矩形内

Posted 方帅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了判断点是否在一个矩形内相关的知识,希望对你有一定的参考价值。

判断是否在矩形内:

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

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

只要判断(AB X AE ) * (CDX CE)  >= 0 就说明E在AD和BC中间夹着,同理(DA X DE ) * (BC X BE) >= 0计算另两边AB,CD就可以了。(备注可进一步学习:向量点乘,叉乘的意义和几何意义  )

最后就是只需要判断

(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     }

 

以上是关于判断点是否在一个矩形内的主要内容,如果未能解决你的问题,请参考以下文章

java知道四个点坐标,怎么判断一个点是否在这个矩形区域内(矩形可能是斜着放的,有一定的斜度)

给出一个矩形用C语言判断一个点是不是这在一个矩形内

java知道四个点坐标,怎么判断一个点是否在这个矩形区域内(矩形可能是斜着放的,有一定的斜度)

C++编程!已知矩形,判断输入的点是不是包含在该矩形内。

判断任意一点是否在矩形内(矩形可能与坐标轴有一定夹角)

如何判断一个点在矩形范围内 unity