宝哥软件园

矩形相交原理分析及求交面积

编辑:宝哥软件园 来源:互联网 时间:2021-10-21

(1)设计一个算法来判断两个矩形是否相交(即是否存在重叠区域)(2)如果两个矩形相交,设计一个算法来寻找相交区域矩形(1)对于这个问题,一般的思路是判断一个矩形的四个顶点是否在另一个矩形的区域内。这个思路最简单,但是效率不高,而且有误差。错误在哪里?下面我们来分析一下。

如上图所示,矩形的交点(重叠区域)分为三种类型(可能还有其他划分)。对于第三种情况,如图(3)所示,两个矩形相交,但是一个矩形的顶点不在另一个矩形的内部。所以那种思维方式是有错误的,这种情况下的交集是查不出来的。仔细看上图,我想到了另一种思路,那就是判断两个矩形中心坐标的水平和垂直距离,只要这两个值满足一定条件,就可以相交。宽度Wa=Xa2-Xa1h Ha=Ya2-Ya1宽度Wb=Xb2-Xb1高度Hb=Yb2-Yb1矩形a (Xa3,Ya3)=((Xa2 Xa1i)/2,(Ya2 Ya1)/2)矩形b (xb3,yb3)=。1)| xb3-xa3 |=wa/2wb/22)| yb3-ya3 |=ha/2hb/2,即| xb2 xb1-xa2-xa1 |=xa2-xa1 xb2-xb1 | yb2 yb1-ya2-ya1 |=ya2-ya1 yb2。要解决这个问题,假设两个矩形相交,让相交后的矩形为c,矩形c左上角的坐标为(Xc1,Yc1),右下角的坐标为(Xc2,Yc2)。观察上图,很明显xc1=max (xa1,xb1) yc1=max (ya1,yb1) xc2=min (xa1)。此外,注意(Xc1,Yc1),(Xc2,Yc2)是在不假设矩形相交的情况下定义的,并且Xc1,Yc1,Xc2,Yc2的值是从上述四个公式中获得的。这样,可以根据xc1、yc1、xc2和yc2的值来判断矩形相交。Xc1、yc1、xc2和yc2可以表示两个矩形相交,只要它们同时满足以下两个公式。3) Xc1=Xc2 4) Yc1=Yc2,即max (xa1,xb1)=min (xa2,xb2) max (ya1,yb1)=min (ya2,yb2)。

更多资讯
游戏推荐
更多+