首页 > 解决方案 > 矩形交点。空交叉口的打印消息

问题描述

我有四个坐标:x,y,width=w,height=h 我有两个矩形,坐标如下:

r1.x=2,r1.y=3,r1.w=5,r1.h=6; 
r2.x=0, r2.y=7,r2.w=-4,r4.h=2

你如何观察这个交叉点是空的。

到目前为止我所做的是:

rectangle intersection (rectangle r1, rectangle r2){
r1.x=max(r1.x,r2.x);
r1.y=max(r1.y,r2.y);
r1.w=min(r1.w,r2.w);
r1.h=min(r1.h,r2.h);
return r1;
}

我认为上面的代码在有交叉路口时使用,但是当交叉路口为空时我不知道。另外,当没有交叉点时,我想打印一条消息“空”。

谢谢!

标签: c++mathematical-optimizationprocedurerectangles

解决方案


当矩形以其宽度和高度表示时,您用于矩形交集的方法不起作用。

如果您存储矩形的两个对角(而不是一个角和尺寸)并确保第一个角的坐标始终小于或等于第二个角,有效地存储矩形的min_x, min_y,max_x和,它可能会起作用。max_y

我建议您采用确保矩形始终包含min坐标并始终排除max坐标的约定。


推荐阅读