c++ - 矩形交点。为空路口打印消息

标签 c++ mathematical-optimization procedure rectangles

我有四个坐标: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_xmin_ymax_xmax_y 用于您的矩形。

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

关于c++ - 矩形交点。为空路口打印消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50560470/

相关文章:

mysql - 当我使用 delete 语句时,我的程序删除了所有行

python - 如何计算矩阵的协方差?

c++ - 更改 QCheckBox 文本颜色

c++ - QTreeView 使用示例 - 如何将子节点添加到现有项目?

c++ - 将 vector<T> 转换为 vector<const T>

matlab - 在Matlab中使用离散参数进行优化

algorithm - 具有最大相等和且不使用所有元素的子集和

sql - 为什么我会收到 "invalid input syntax for type integer"错误?

.net - servicestack.ormlite V3如何执行带有输出参数的程序?

c++ - 寻求简单内存数据库*服务器*的建议(不需要持久性)