怎样判断两个矩形区域是否出现交叉或重叠现象

gzq0712 2007-12-06 02:03:20
如上:
...全文
843 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
np1234 2007-12-09
  • 打赏
  • 举报
回复
4楼的没有个别边的重叠的判断,比如第一个长方形的左边,与第二个的右边,应该是这样的
bool IsCross( RECT *rect1, RECT *rect2 )
{
RECT rcTmp;
rcTmp.left = _max( rect1-> left, rect2-> left );
rcTmp.top = _max( rect1-> top, rect2-> top );
rcTmp.right = _min( rect1-> right, rect2-> right );
rcTmp.bottom = _min( rect1-> bottom, rect2-> bottom );
return (rcTmp.right >= rcTmp.left && rcTmp.bottom >= rcTmp.top);
}
tiger波波 2007-12-07
  • 打赏
  • 举报
回复
判断两个矩形区域是否出现交叉或重叠现象
你首先应该知道这2格矩形的rect值吧,对比下就行了
lzf8977 2007-12-07
  • 打赏
  • 举报
回复
MARK 一下,,,以前也做过,不过方法比较笨,,
Chivalry 2007-12-07
  • 打赏
  • 举报
回复
mark
LouYongZhi 2007-12-07
  • 打赏
  • 举报
回复
bool IsCross( RECT *rect1, RECT *rect2 )
{
RECT rcTmp;
rcTmp.left = _max( rect1->left, rect2->left );
rcTmp.top = _max( rect1->top, rect2->top );
rcTmp.right = _min( rect1->right, rect2->right );
rcTmp.bottom = _min( rect1->bottom, rect2->bottom );
return (rcTmp.right > rcTmp.left && rcTmp.bottom > rcTmp.top);
}
pptor 2007-12-06
  • 打赏
  • 举报
回复
jf
laoma_hbu 2007-12-06
  • 打赏
  • 举报
回复
CRect::IntersectRect
Nonzero if the intersection is not empty; 0 if the intersection is empty.
yxz_lp 2007-12-06
  • 打赏
  • 举报
回复

CRect rect1,rect2;
...................
CRgn rgn;
rgn.CreateRectRgn(rect1.left,rect1.top,rect1.right,rect1.bottom);
if (rgn.RectInRegion(&rect2))
{
//相交
}
else
{
//不相交
}

19,469

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧