判断两矩形是否相交
2011-12-09 09:38
106 查看
//判断矩形是否相交 bool FMath::IsRectIntersect(const FRect& rect1, const FRect& rect2) { bool bResult = true; double dWidthRectA; double dHeightRectA; double dWidthRectB; double dHeightRectB; //方便计算,中心点坐标为实际坐标的2倍 CPoint centerRectA; CPoint centerRectB; //bottom的y坐标比top的大 dWidthRectA = rect1.GetBottomRight().GetX() - rect1.GetTopLeft().GetX(); dHeightRectA = rect1.GetBottomRight().GetY() - rect1.GetTopLeft().GetY(); dWidthRectB = fabs(rect2.GetBottomRight().GetX() - rect2.GetTopLeft().GetX()); dHeightRectB = fabs(rect2.GetBottomRight().GetY() - rect2.GetTopLeft().GetY()) ; centerRectA.x = GetDoubleInt(rect1.GetTopLeft().GetX()/2 + rect1.GetBottomRight().GetX()/2); centerRectA.y = GetDoubleInt(rect1.GetTopLeft().GetY()/2 + rect1.GetBottomRight().GetY()/2); centerRectB.x = GetDoubleInt(rect2.GetTopLeft().GetX()/2 + rect2.GetBottomRight().GetX()/2); centerRectB.y = GetDoubleInt(rect2.GetTopLeft().GetY()/2 + rect2.GetBottomRight().GetY()/2); //判断两个矩形的中心坐标的水平和垂直距离 if ( (fabs(double(centerRectA.x - centerRectB.x)) <= (dWidthRectA + dWidthRectB)) && (fabs(double(centerRectA.y - centerRectB.y)) <= (dHeightRectA + dHeightRectB)) ) { bResult = true; } else { bResult = false; } return bResult; }
相关文章推荐
- 判断两个矩形是否相交算法
- 判断两个矩形是否相交的4个方法
- UVA 191 || Intersection (判断线段是否与矩形相交
- Solution 23: 判断矩形和圆是否相交
- 判断两矩形是否相交
- poj 1410 判断线段和矩形是否相交
- POJ 1410 Intersection(判断线段和矩形是否相交)
- 判断两个矩形是否相交的4个方法
- E. 打击判定 判断矩形是否相交
- 判断两个矩形是否相交
- C# 判断两个矩形是否相交
- 1410 Intersection 判断线段和矩形是否相交 转换为判断和矩形四条边是否相交以及线段是否在矩形内部 包含端点
- OpenVc判断矩形是否相交算法
- 判断两个矩形是否相交
- 判断两个矩形是否相交的算法
- 使用C++判断两矩形是否相交
- poj-1410 判断矩形和线段是否相交
- HDU 1221 Rectangle and Circle(判断圆与矩形是否相交)
- 判断线段和矩形是否相交
- 判断两矩形是否相交