判断两矩形是否相交

简介:
复制代码
 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 }
复制代码
复制代码

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

相关文章
|
3月前
|
存储 算法 Java
给定一组棋子的坐标,判断是否可以互相攻击。如果两个棋子的横纵坐标任意一个相同,则认为它们可以互相攻击。(提示:使用哈希表)
给定一组棋子的坐标,判断是否可以互相攻击。如果两个棋子的横纵坐标任意一个相同,则认为它们可以互相攻击。(提示:使用哈希表)
19 0
|
10月前
判断点是否在线段上
判断点是否在线段上
77 0
|
10月前
判断线段是否相交
判断线段是否相交
55 0
|
10月前
给定三个顶点的坐标使用程序计算三角形
给定三个顶点的坐标使用程序计算三角形
32 0
|
10月前
射线法——判断一个点是否在多边形内部(适用于凸多边形和凹多边形)【关键原理解释+文字伪代码】
射线法——判断一个点是否在多边形内部(适用于凸多边形和凹多边形)【关键原理解释+文字伪代码】
259 0
|
10月前
|
Java
判断顶点凹凸性、判断多边形的凹凸性、填充凹坑将凹多边形处理为凸多边形【java实现+原理讲解】
判断顶点凹凸性、判断多边形的凹凸性、填充凹坑将凹多边形处理为凸多边形【java实现+原理讲解】
158 0
判断顶点凹凸性、判断多边形的凹凸性、填充凹坑将凹多边形处理为凸多边形【java实现+原理讲解】
|
10月前
|
Java 索引
给定一个多边形的点集——判断所给点集的方向为顺时针方向还是逆时针方向【java实现+原理讲解】
给定一个多边形的点集——判断所给点集的方向为顺时针方向还是逆时针方向【java实现+原理讲解】
151 0
|
算法 Java
Java计算四边形中心点和两条线段交点算法
Java计算四边形中心点和两条线段交点算法
120 0
Java计算四边形中心点和两条线段交点算法
给你n个线段,代表线段的左右端点,问最少删几条线段,使得剩下当中存在一个线段与所有剩下的所有线段都有交集
考虑枚举每一条线段,求以此线段与所有线段都有交集,需要删除的线段数。 那么对于此线段[L,R],右端点小于L的,与它无交集,需要全删掉。同理左端点大于R的线段,也需要都删掉。 那么剩下的问题,就是需要删几个了。
82 0
|
算法
判断三角形的性质(直角或等腰)简便算法
判断三角形的性质(直角或等腰)简便算法
93 0