判断两矩形是否相交

简介:
复制代码
 1 //判断矩形是否相交
2 bool FMath::IsRectIntersect(const FRect& rect1, const FRect& rect2)
3 {
4 bool bResult = true;
5
6 double dWidthRectA;
7 double dHeightRectA;
8
9 double dWidthRectB;
10 double dHeightRectB;
11
12 //方便计算,中心点坐标为实际坐标的2倍
13 CPoint centerRectA;
14 CPoint centerRectB;
15
16 //bottom的y坐标比top的大
17 dWidthRectA = rect1.GetBottomRight().GetX() - rect1.GetTopLeft().GetX();
18 dHeightRectA = rect1.GetBottomRight().GetY() - rect1.GetTopLeft().GetY();
19
20 dWidthRectB = fabs(rect2.GetBottomRight().GetX() - rect2.GetTopLeft().GetX());
21 dHeightRectB = fabs(rect2.GetBottomRight().GetY() - rect2.GetTopLeft().GetY()) ;
22
23 centerRectA.x = GetDoubleInt(rect1.GetTopLeft().GetX()/2 + rect1.GetBottomRight().GetX()/2);
24 centerRectA.y = GetDoubleInt(rect1.GetTopLeft().GetY()/2 + rect1.GetBottomRight().GetY()/2);
25
26 centerRectB.x = GetDoubleInt(rect2.GetTopLeft().GetX()/2 + rect2.GetBottomRight().GetX()/2);
27 centerRectB.y = GetDoubleInt(rect2.GetTopLeft().GetY()/2 + rect2.GetBottomRight().GetY()/2);
28
29
30 //判断两个矩形的中心坐标的水平和垂直距离
31 if ( (fabs(double(centerRectA.x - centerRectB.x)) <= (dWidthRectA + dWidthRectB))
32 && (fabs(double(centerRectA.y - centerRectB.y)) <= (dHeightRectA + dHeightRectB)) )
33 {
34 bResult = true;
35 }
36 else
37 {
38 bResult = false;
39 }
40
41 return bResult;
42
43 }
复制代码
复制代码

本文转自博客园知识天地的博客,原文链接:判断两矩形是否相交,如需转载请自行联系原博主。

相关文章
|
开发者
【Leetcode -485.最大连续1的个数 -492.构造矩形】
【Leetcode -485.最大连续1的个数 -492.构造矩形】
39 0
|
4月前
|
算法 C++
空间或平面判断两线段相交(求交点)
空间或平面判断两线段相交(求交点)
24 0
|
4月前
|
算法
空间判断点是否在线段上
空间判断点是否在线段上
27 0
|
4月前
|
算法
平面中判断点在三角形内算法(同向法)
平面中判断点在三角形内算法(同向法)
27 0
|
4月前
|
算法 C++
平面中判断线段与矩形是否相交
平面中判断线段与矩形是否相交
64 0
|
Java
判断顶点凹凸性、判断多边形的凹凸性、填充凹坑将凹多边形处理为凸多边形【java实现+原理讲解】
判断顶点凹凸性、判断多边形的凹凸性、填充凹坑将凹多边形处理为凸多边形【java实现+原理讲解】
272 0
判断顶点凹凸性、判断多边形的凹凸性、填充凹坑将凹多边形处理为凸多边形【java实现+原理讲解】
判断线段是否相交
判断线段是否相交
90 0
判断点是否在线段上
判断点是否在线段上
157 0
给定三个顶点的坐标使用程序计算三角形
给定三个顶点的坐标使用程序计算三角形
71 0
射线法——判断一个点是否在多边形内部(适用于凸多边形和凹多边形)【关键原理解释+文字伪代码】
射线法——判断一个点是否在多边形内部(适用于凸多边形和凹多边形)【关键原理解释+文字伪代码】
709 0