如何找到位于多边形凸包轮廓上的所有点(Matlab)

时间:2011-04-06 10:26:51

标签: matlab polygon

抱歉,如果这个问题看似简单,但我无法理解。

想象两个随机重叠的任意矩形,使得它们的轮廓仅在两个位置相交。现在,您从矩形1中剪切重叠区域。

这个“被咬住的矩形1”现在有以下几点(顶点):( 1)矩形1的所有点位于矩形2之外,(2)矩形2的所有点位于矩形1和(3)内两个交叉点。

问题如下:如何获得新点的顺序,以便函数plot(...)或fill(...)将绘制正确的“Bitten Rectangle 1”?

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

这种凸体船体方法的问题在于它只有在交点位于矩形1的不同线上时才有效,因为它们是凸包的一部分。 如果它们位于同一条线上,它们就不再被视为凸包的一部分。

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

希望有人能帮助我...... 先感谢您, 帕特里克

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”。

相关问题