判断两个矩形是否相交

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/13 05:22:36

判断两个矩形是否相交
判断两个矩形是否相交

判断两个矩形是否相交
以前写过一篇如何判断线段相交的问题,上网查了一些方法,在这里做一下后一个问题的总结:方法一:假定矩形是用一对点表达的(minx,miny)(maxx,maxy) ,那么两个矩形rect1{(minx1,miny1)(maxx1,maxy1)},rect2{(minx2,miny2)(maxx2,maxy2)} 相交的结果一定是个矩形,构成这个相交矩形rect{(minx,miny)(maxx,maxy)}的点对坐标是:minx = max(minx1,minx2) miny = max(miny1,miny2) maxx = min(maxx1,maxx2) maxy = min(maxy1,maxy2) 如果两个矩形不相交,那么计算得到的点对坐标必然满足 minx > maxx 或者 miny > maxy bool CPreprocess::crossAlgorithm1(CvRect r1,CvRect r2) { int nMaxLeft = 0; int nMaxTop = 0; int nMinRight = 0; int nMinBottom = 0; //计算两矩形可能的相交矩形的边界 nMaxLeft = r1.x >= r2.x r1.x :r2.x; nMaxTop = r1.y >= r2.y r1.y :r2.y; nMinRight = (r1.x + r1.width) nMinBottom) { return false; } else { return true; } }方法二:如果两个矩形相交,则必然存在线条交叉,而能交叉的线条只有横线和竖线,两根横线或两根竖线都不可能交叉.所以,这个问题就转化成寻找是否存在交叉的横线与竖线.// bool CPreprocess::crossAlgorithm2(CvRect r1,CvRect r2) { //,//从一个矩形中取出一条横线,与另一矩形中的一条竖线判断是否交叉 return crossLine(r1.x,r1.x + r1.width,r1.y,r2.y,r2.y + r2.height,r2.x) || crossLine(r1.x,r1.x + r1.width,r1.y,r2.y,r2.y + r2.height,r2.x + r2.width) || crossLine(r1.x,r1.x + r1.width,r1.y + r1.height,r2.y,r2.y + r2.height,r2.x) || crossLine(r1.x,r1.x + r1.width,r1.y + r1.height,r2.y,r2.y + r2.height,r2.x r2.width) || crossLine(r2.x,r2.x + r2.width,r2.y,r1.y,r1.y + r1.height,r1.x) || crossLine(r2.x,r2.x + r2.width,r2.y,r1.y,r1.y + r1.height,r1.x + r1.width) || crossLine(r2.x,r2.x + r2.width,r2.y + r2.height,r1.y,r1.y + r1.height,r1.x) || crossLine(r2.x,r2.x + r2.width,r2.y r2.height,r1.y + r1.height,r1.y + r1.height,r1.x r1.width); } //判断直线是否相交 bool CPreprocess::crossLine(int left,int right,int x,int top,int bottom,int y) { return (top < y) && (bottom > y) && (left < x) && (right > x); }

判断两个矩形是否相交 判断两个矩形是否相交 如何判断两个矩形是否相交 如何判断两个矩形是否相交 判断线段与矩形是否相交 判断两个线段是否相交 pku 1410(判断线段是否跟矩形相交) C语言中怎么编写程序判断两个平行于坐标轴的矩形是否相交,麻烦大神们了. 如何用VB判断 矩形和一线段是否相交如何判断 矩形和一线段是否相交已知:矩形的起始坐标线段的起始坐标 如何判断空间坐标系中两个长方形是否相交 怎样用几何方法判断一个圆和一个矩形是否相交? 计算两个矩形是否有相交部分,求C或C++源代码算法已知如图两个矩形,他们的d(短边)是一样的,坐标点是d的中点.判断他们两者是否有相交部分,要考虑各种极端情况以确保算法正确.最好就用 计算两个矩形是否有相交部分,求C或C++源代码算法已知如图两个矩形,他们的d(短边)是一样的,坐标点是d的中点.判断他们两者是否有相交部分,要考虑各种极端情况以确保算法正确.最好就用 如何判断两个斜矩形相交啊如题,能给个思路就好 C/C++ 如何判断两个矩形之间的关系?设计一个算法,来判断两个矩形之间的关系 是相交,内含,还是没关系 判断两线段是否相交 判断两线段是否相交 matlab判断线段和矩形是否相交已知线段两个端点(x,y) (x1,y1)矩形的四个顶点(a1,b1)(a2,b2)(a3,b3)(a4,b4)写个函数 iscross(x,y,x1,y1,a1,b1,a2,b2,a3,b3,a4,b4) 若相交返回1 否则返回0不要告诉我