判断某一点是否在矩形中的问题

来源:互联网 发布:刷留言软件安卓版 编辑:程序博客网 时间:2024/04/30 07:44

             这里存在两种情况:一是标准矩形,即矩形的一边跟坐标轴垂直或者平行;二是旋转矩形,即矩形的边与坐标轴既不平行又不垂直。下面分这两种情况进行说明。

在直角坐标系下,横轴表示x轴,纵轴表示y轴。则第一种情况下只需对角的两点即可确定矩形。如下所示:

对于任意一点p(x,y)可以根据对角的两个点的坐标来判断点p是否在矩形内。

对于第二种情况,则当且仅当三个点给定时,才能确定矩形。如下所示:

在这种情况下如果判断一个点是否在确定的矩形内,那么情况较为复杂。分析如下:

1    可以计算第四个角点,将四个角点按照先y后x的大小进行排列,标记为p1,p2,p3,p4。

2   根据给定的p(x,y),来计算向量p1->p,p1->p2,p1->p3的大小。

3   分别计算向量p1->p与p1->p2,p1->p与p1->p3之间的夹角分别为a,b,确保计算的两个夹角都是锐角,否则p在矩形外。

4   计算向量p1->p4,并计算p1->4与p1->p2之间的夹角c。


5   当a<=c时,如果p1p2 / cosa >= p1p 时,p在矩形内,否则在矩形外。

6   当a>c时,如果p1p3 / cosb >= p1p 时,p在矩形内,否则在矩形外。




0 0