Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
                        
                        3年前关闭。
                                                                                            
                
        
假设我有5个矩形,每个矩形有4个参数,
这些是x,y,宽度,高度。 x和y->开始协调,w和h->边缘。我们如何计算交叉口面积?

 int rectangle[5][4];

    int calculate_intersection(){
    ....
    return total;
    }

最佳答案

您将要迭代制作新的矩形,每个矩形都是前一个的交集。假设您有四个矩形,称它们为Ri,其中i1, 2, 3,4。我们将交点矩形I4称为4个矩形的交点。

首先,我们要相交R1R2。将生成的widthheightxy保存到I4

接下来,我们要相交R3I4。将生成的widthheightxy保存到I4

然后,我们将要相交R4I4。将生成的widthheightxy保存到I4

此时,I4是将所有四个矩形R1, R2, R3,R4相交的结果。我确定您现在将知道在给定这些值的情况下如何计算面积。

::提示和寻找相交的伪代码::

鉴于这些矩形可能相对于彼此处于任何方向和位置,我们需要做一些工作来确定点之间的相对位置。通常,我们将使用MAXMIN函数,或者您可以使用以下单行代码:

int max = (a>b) ? a : b;
int min = (a<b) ? a : b;


max此处将保留ab的值,以较大者为准,而'min'将保留较小的值。现在,我们可以解决我们的问题了。

要找到I4 x值,我们需要在x方向上获取RiRj矩形的最大值:I4x = max{Ri_x, Rj_x}

要找到I4 y值,我们需要在y方向上获取RiRj矩形的最大值:I4y = max{Ri_y, Rj_y}

要找到I4 width值,我们需要取RiRj矩形总宽度的最小值,但是我们需要减去最后移位的x位置:I4w = min{Ri_x + Ri_w, Rj_x + Rj_w} - I4_x

要找到I4 height值,类似地,我们需要获取RiRj矩形总高度的最小值,然后减去最后移动的y位置:I4w = min{Ri_y + Ri_h, Rj_y + Rj_h} - I4_y

10-08 04:13