我有四个坐标: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;
}
我认为上面的代码是在有交集的时候使用的,但是当交集为空时我不知道。另外,我想在没有交叉点时打印一条消息“空”。
谢谢!
最佳答案
当矩形用它们的宽度和高度表示时,您用于矩形交集的方法不起作用。
如果您存储矩形的两个对角(而不是一个角和尺寸)并确保第一个角的坐标始终小于或等于第二个角,则可以有效地存储 min_x
、min_y
、max_x
和 max_y
用于您的矩形。
我建议您采用确保矩形始终包括它们的 min
坐标并始终排除它们的 max 的约定
坐标。
关于c++ - 矩形交点。为空路口打印消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50560470/