想象两个随机重叠的任意矩形,使得它们的轮廓仅在两个位置相交。现在,您从矩形1中剪切重叠区域。
这个“被咬住的矩形1”现在有以下几点(顶点):( 1)矩形1的所有点位于矩形2之外,(2)矩形2的所有点位于矩形1和(3)内两个交叉点。
问题如下:如何获得新点的顺序,以便函数plot(...)或fill(...)将绘制正确的“Bitten Rectangle 1”?
到目前为止我做了什么: 我确定了位于矩形2 +交叉点之外的所有点的凸包。然后,必须在正确的顺序中添加位于第一和第二交叉点的索引之间的矩形1内的新点(由于与矩形2重叠)。
这种凸体船体方法的问题在于它只有在交点位于矩形1的不同线上时才有效,因为它们是凸包的一部分。 如果它们位于同一条线上,它们就不再被视为凸包的一部分。
我需要的是一种方法来获得位于凸包上的所有可能点的顺序,而不仅仅是最外面的点。
希望有人能帮助我...... 先感谢您, 帕特里克
答案 0 :(得分:0)
在Matlab中,有一个叫做polybool
的神奇函数可以对多边形进行任何设置操作:http://www.mathworks.com/help/toolbox/map/ref/polybool.html
您所要做的就是定义四个描述矩形的数组(rect1x,rect1y,rect2x和rect2y)并调用[resultx resulty] = polybool('subtraction', rect1x, rect1y, rect2x, rect2y)
。生成的数组将描述“Bitten Rectangle 1”。