如何确定一个点在可旋转的矩形区域内?

如下图所示,已知四个点A,B,C,D的坐标分别是(x1,y1),(x2,y2)(x3,y3)(x4,y4),如何确定任意一个点(x,y)是否在这个A、B、C、D四个点组成的矩形区域以内?

如何确定一个点在可旋转的矩形区域内?_第1张图片
示意图

部分思路

面积法

思路说明:假设任意点为M(x,y)。如果点M在区域内,那么必然有四个三角形面积S△AMB+S△BMC+S△CMD+S△DMA等于矩形ABCD的面积。特别的,如果这四个中只要有一个三角形的面积为0,意味着点M处在某一条边上,比如S△AMB=0则说明M位于线段AB上,如果加起来的值大于了矩形面,说明在矩形区域外。这种方法对任意的不规则多边形适用,但是需要大量的计算。

垂直线段法

计算点到直线AB、CD、AD、BC的距离之和,如果等于AB到CD的距离加上AD到BC的距离则在区域内,如果大于则在区域外。

点积法

满足条件 (0<AMABAB)∧(0<AMADAD)
其中AM为向量(x-x1,y-y1)AB为向量(x2-x1,y2-y1),AD为向量(x4-x1,y4-y1)

参考链接:
https://math.stackexchange.com/questions/190111/how-to-check-if-a-point-is-inside-a-rectangle
https://stackoverflow.com/questions/2752725/finding-whether-a-point-lies-inside-a-rectangle-or-not

你可能感兴趣的:(如何确定一个点在可旋转的矩形区域内?)