美文网首页
如何确定一个点在可旋转的矩形区域内?

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

作者: RxCode | 来源:发表于2019-11-11 22:59 被阅读0次

    如下图所示,已知四个点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

    相关文章

      网友评论

          本文标题:如何确定一个点在可旋转的矩形区域内?

          本文链接:https://www.haomeiwen.com/subject/bdpxictx.html