矩形的集合运算

矩形的集合运算在交互式绘图方面有着很重要的意义。判断点与直线段、多义线、圆、圆弧、多边形等图形元素的相交关系时,为了提高计算速度,常常需要判断点与这些图形元素包围矩形的相交关系;进行图形裁剪、矩形选择以及判断图形元素之间的相交关系时也涉及到矩形的集合运算。

MATLAB用rectint函数求矩形区域的交。该函数的调用格式为:

area=rectint(A,B) 返回矢量A和B指定的矩形相交部分的面积。A和B分别指定一个矩形,输出area是标量。A和B也可以是矩形,其中每一行为一个位置矢量。此时area也是一个矩阵,值为A指定的所有矩形与B指定的所有矩形的交。即,如果A是一个n×4的矩阵,B是一个m×4的矩阵,则area是一个n×m的矩阵,其中area(i,j)为A的第i行和B的第j行指定的矩形相交的面积。

注意,位置矢量A或B是一个4元素矢量[x,y,width,height],其中x和y定义矩形的一个顶点,width和height定义矩形的大小,单位分别取x和y方向上的单位。

下面的代码求两个矩形的交,并绘出它们的图形。

Document Image

图1-2 矩形相交关系

code.matlab
>> a=[20 30 100 100];
>> b=[50 60 300 400];
>> rectangle('position',[20 30 100 100])
>> rectangle('position',[50 60 300 400])
>> area=rectint(a,b)
area =
        4900

生成图1-2。