龙岩人自己的网站,网站是软件吗,蚌埠哪有做网站的,怎么做网页长图问题#xff1a;给定两个矩形A和B#xff0c;矩形A的左上角坐标为#xff08;Xa1,Ya1#xff09;#xff0c;右下角坐标为#xff08;Xa2,Ya2#xff09;#xff0c;矩形B的左上角坐标为#xff08;Xb1,Yb1#xff09;#xff0c;右下角 坐标为#xff08;Xb2,Yb2给定两个矩形A和B矩形A的左上角坐标为Xa1,Ya1右下角坐标为Xa2,Ya2矩形B的左上角坐标为Xb1,Yb1右下角 坐标为Xb2,Yb2。1设计一个算法确定两个矩形是否相交即有重叠区域2如果两个矩形相交设计一个算法求出相交的区域矩形 (1) 对于这个问题一般的思路就是判断一个矩形的四个顶点是否在另一个矩形的区域内。这个思路最简单但是效率不高并且存在错误错误在哪里下面分析一 下。 如上图把矩形的相交区域重叠分成三种可能也有其他划分对于第三种情况如图中的3两个矩形相交但并不存在一个矩形的顶点在另一个矩形 内部。所以那种思路存在一个错误对于这种情况的相交则检查不出。 仔细观察上图想到另一种思路那就是判断两个矩形的中心坐标的水平和垂直距离只要这两个值满足某种条件就可以相交。矩形A的宽 Wa Xa2-Xa1 高 Ha Ya2-Ya1矩形B的宽 Wb Xb2-Xb1 高 Hb Yb2-Yb1矩形A的中心坐标 (Xa3,Ya3) (Xa2Xa1)/2 (Ya2Ya1)/2 矩形B的中心坐标 (Xb3,Yb3) (Xb2Xb1)/2 (Yb2Yb1)/2 所以只要同时满足下面两个式子就可以说明两个矩形相交。 1 | Xb3-Xa3 | Wa/2 Wb/2 2 | Yb3-Ya3 | Ha/2 Hb/2 即| Xb2Xb1-Xa2-Xa1 | Xa2-Xa1 Xb2-Xb1| Yb2Yb1-Ya2-Ya1 | Y a2-Ya1 Yb2-Yb1 (2) 对于这个问题假设两个矩形相交设相交之后的矩形为C且矩形C的左上角坐标为Xc1,Yc1右下角坐标为Xc2,Yc2经过观察上图很 显然可以得到Xc1 max(Xa1,Xb1)Yc1 max(Ya1,Yb1)Xc2 min(Xa2,Xb2)Yc2 min(Ya2,Yb2)这样就求出了矩形的相交区域。 另外注意到在不假设矩形相交的前提下定义Xc1,Yc1,Xc2,Yc2,且Xc1,Yc1,Xc2,Yc2的值由上面四个式子得出。这样 可以依据Xc1,Yc1,Xc2,Yc2的值来判断矩形相交。Xc1,Yc1,Xc2,Yc2只要同时满足下面两个式子就可以说明两个矩形相交。3) Xc1 Xc24) Yc1 Yc2即max(Xa1,Xb1) min(Xa2,Xb2)max(Ya1,Yb1) min(Ya2,Yb2)转载于:https://www.cnblogs.com/zhoug2020/p/7451340.html