如何绘制一组多个矩形的轮廓?

时间:2014-06-04 14:53:32

标签: objective-c algorithm graphics geometry convex-polygon

我需要绘制一组彼此相邻的矩形的封闭多边形。

让我们考虑与至少一个其他矩形共享至少一个边缘(或其一部分)的文本字段。 我可以得到矩形点坐标,所以我基本上有我需要的任何数据。

您能想到一个简单的算法/程序来围绕这些对象绘制多边形(连接的直线路径)。

这里展示了不同的潜在案例(A,B,C等......)。在示例A中,我还绘制了一个蓝色多边形,这是我需要绘制的路径,概述了一组矩形。

All different cases

我在这里读过有关凸包和类似的东西,但实际上,这看起来像一个更简单的问题。 我想到的一个(开始)解决方案是我实际需要绘制的点只是任何一对矩形不共享的点,这意味着多个矩形的顶点是多余的。我无法找到的是我需要从一个画到一个画线的顺序。

我目前正在研究目标c,但任何其他语言或算法都会受到赞赏,包括伪。

谢谢!

2 个答案:

答案 0 :(得分:1)

恕我直言,它应该是这样的。制作一个边缘列表,看看是否有一些重叠:如果矩形与x,y轴对齐,这应该很简单。您只需找到在相同x或y上具有顶点的边缘,其他坐标需要介于两者之间。在此之后,剩余的边缘应该形成轮廓。

找到公共边的另一种方法是沿着每个具有顶点的x和y轴打破所有矩形。这应该看起来好像你正在将所有线增长到无穷大。在此之后,所有公共边都将具有公共顶点并且可以被消除。

答案 1 :(得分:1)

您有两行和三个不同的y - 值。我们说y0是最重要的,y2是底端,y1标记两行之间的中间。
每行都有一个最大和最小x值,让我们说顶行从x0_minx0_max,最后一行从x2_min到{{1 }}。鉴于这些价值你只是画出了这个东西:

x2_max