2015-11-05 59 views
0

我有一个正方形,它是许多小单元格的网格。每个单元的大小为0.1 * 0.1。绘制几条曲折线将该正方形划分为子区域。之字形线只跟随细胞边缘。网格区域分为几个子区域。如何跟踪每个网格的成员资格?

这些锯齿线交叉的顶点被计算并存储在不同的矩阵中。在这种情况下,在中心会有6条锯齿线,因此有6个矩阵存储线的坐标。

每个单元的中心以及四个顶点都被计算并存储在一个大矩阵中。现在,如果我想跟踪每个单元格属于哪个子区域,我应该使用什么循环算法?我们将左上方的区域标记为1,然后顺时针计数。然后左上角区域的单元格应该标记为1.右上角区域的单元格应该标记为2,依此类推。

enter image description here

+2

请给出一个输入数据的例子。输入是一个已经过滤的锯齿形曲线吗? – Daniel

+0

曲折线的输入是6矩阵。每个都有2列,但行数不同。 – mike

+0

对于第一列[.1.1.2.2.3.3 ...]'第二列[.1.2.2.3.3.4 ...]',锯齿线从从左下角到右上角。 – mike

回答

0

从给定的例子,我们可以推断,该地区是“部门”有一个共同的中心和会议轮廓的径向线。

您可以从它们各自的数组中获得曲折线的起始边缘(在轮廓上)。他们各自分开属于不同区域的两个单元。通过计算角度并对它们进行排序,您可以越来越多地对区域进行编号并将它们关联起始单元格。

现在“绘制”大矩阵中的锯齿形线条(每个单元格有两个标记,表示在其右侧或下方存在边缘)。然后,从每个区域的单元格开始,使用seed filling算法。您将需要修改基本算法以说明边缘的存在。

+0

我不确定你的应用程序在做什么,但也许它可以用不同的方式来解决,而不需要网格:你可以直接检查w.r.t.线段。 –