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

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

示意图

部分思路

面积法

思路说明:假设任意点为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<AMAB<ABAB)∧(0<AMAD<ADAD)
其中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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容