【问题标题】:An gridded area is divided into several sub-areas. How to track each grid's membership?一个网格区域被划分为几个子区域。如何跟踪每个网格的成员资格?
【发布时间】:2016-02-06 17:08:42
【问题描述】:

我有一个正方形,它是许多小单元格的网格。每个单元格的大小为 0.1*0.1。绘制了几条锯齿线以将该正方形划分为子区域。之字形线仅跟随单元格边缘。

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

每个单元格的中心以及四个顶点都被计算并存储在一个大矩阵中。现在,如果我想跟踪每个单元格属于哪个子区域,我应该使用什么循环算法?

比如说,我们将左上角区域标记为 1,然后顺时针计数。然后左上区域的单元格应标记为 1。右上区域的单元格应标记为 2,依此类推。

【问题讨论】:

  • 请举例输入数据。输入是已经光栅化的锯齿形吗?
  • 之字形线的输入是6个矩阵。每个都有 2 列,但行数不同。
  • 第一列 [.1 .1 .2 .2 .3 .3 ...]' 第二列 [.1 .2 .2 .3 .3 .4 ...]' ,曲折线从左下角移动到右上角。
  • 那条线和边框之间有 0.1 的间隙。左下角的单元格属于哪里?
  • 实际上线条在边界处结束。我只是使用 .1 作为说明。希望这能澄清问题

标签: matlab geometry figure


【解决方案1】:

从给定的示例中,我们可以推断出这些区域是具有共同中心和与轮廓相交的径向线的“扇区”。

您可以从它们各自的数组中获取锯齿线的起始边缘(在轮廓上)。它们各自分隔属于不同区域的两个单元格。通过计算角度并对它们进行排序,您可以不断地对区域进行编号并将它们与起始单元格相关联。

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

【讨论】:

  • 我不确定您的应用程序在做什么,但也许可以完全不同地处理它,而不需要网格:您可以直接检查一个点在 w.r.t 的哪一侧。一条线段。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-09
  • 2021-11-12
相关资源
最近更新 更多