2011-04-06 126 views
1

对不起,如果这个问题看起来很简单,但我无法弄清楚。如何找到位于多边形凸包的轮廓上的所有点(Matlab)

想象两个随机重叠的任意矩形,以便它们的轮廓仅在两个位置相交。现在您将矩形1的重叠区域剪除。

此“已咬住的矩形1”现在具有以下点(顶点):(1)位于矩形2之外的矩形1的所有点,(2)全部位于矩形1内的矩形2的点和(3)两个交点。

问题知道如下:我怎样才能得到新点的顺序,以便函数plot(...)或fill(...)会绘制正确的“Bitten Rectangle 1”?

我到目前为止所做的: 我确定了位于矩形2 +交点之外的所有点的凸包。然后必须在第一个和第二个交点的索引之间按照正确的顺序添加位于矩形1内的新点(由于与矩形2重叠)。

这个凸包方法的问题在于,它只适用于交点位于矩形1的不同行上,因为它们是凸包的一部分。 如果它们位于同一条线上,则不再将其视为凸包的一部分。

我需要的是一种方法来获得位于凸包上的所有可能点的顺序,而不仅仅是最外面的点。

希望有人能帮助我... 谢谢你在前进, 帕特里克

回答

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)。结果数组将描述“被咬住的矩形1”。