我试图找到最小的矩形,它将封装另外两个矩形,比如R1和R2。每个矩形的定义如下。
struct _Rectangle {
int32_t swX;
int32_t swY;
uint32_t Height;
uint32_t Width;
};
我已经尝试绘制并查看通用算法。但是我只得到了具体案例。例如,如果R1在象限2中,R2在象限4中,或者R1在象限1中,R2在象限3中。
我知道必须有一种简单的方法来评估新矩形所需的4个数量。
答案 0 :(得分:3)
易。找出两个矩形的所有8个点的x和y的最小值和最大值。
边界矩形将由4个点定义:(min_x,min_y),(min_x,max_y),(max_x,min_y),(max_x,max_y)
使用您的代表,您将执行以下操作:
int32_t minX = r1.swX > r2.swX ? r2.swX : r1.swX;
int32_t minY = r1.swY > r2.swY ? r2.swY : r1.swY;
int32_t maxX = ( r1.swX + r1.Width ) > ( r2.swX + r2.Width ) ?
r2.swX + r2.Width : r1.swX + r1.Width;
int32_t maxY = ( r1.swY + r1.Height ) > ( r2.swY + r2.Height ) ?
r2.swY + r2.Height : r1.swY + r1.Height;
br.swX = minX;
br.swY = minY;
br.Width = maxX - minX;
br.Height = maxY - minY;
答案 1 :(得分:1)
你可以