3

首先,我不确定要为此使用哪些关键字,我想我可能使用了错误的关键字来搜索它,所以如果有人能给我任何提示,我将不胜感激。

我的问题如下:我需要在房屋平面图中找到“房间”。例如采取这个几何:

在此处输入图像描述

所需的算法会告诉我哪些顶点限制了每个房间。所以对于这个例子,它将是:

  • A室:1、2、9、10、3、4、5、8 ,1
  • B室:2、3、10、9、2
  • C室:11、12、14、13、11
  • D室:5、6、7、8、5

我将顶点和边作为输入数据。编辑:边缘数据如下(边缘 8、1、2):

xy

47 196

47 85

258 85

它是像素坐标的。

4

3 回答 3

2

图论并没有真正帮助我,因为我已经断开了共享信息的循环。例如 [1 2 9 10 3 4 5 8 1] 和 [11 12 14 13 11]。所以最后我最终做了一个图像填充,当扩展填充 1 像素的边界并进行布尔运算以确定填充图像内的顶点时。

于 2012-09-24T11:57:55.763 回答
0

一种可能的解决方案是对该区域进行三角测量,以便每个输入边都是某个三角形的边。然后将三角形分割成连接的集合并找到它们的边界。

三角测量有几种算法:剪耳法、德劳内法、...

于 2012-09-03T19:35:11.157 回答
0

这是平面图。它有 V 个顶点、E 个边和 F = E - V + 2 个面(包括外面)。我们必须确定所有面的边缘列表。在这些列表中,每条边都将被使用两次(向前和向后)。

创建主弧列表,添加所有弧(即对于 1-2 无向边添加 1-2 和 2-1 有向弧)

找到最低的顶点。如果有一些这样的点,请选择最左边的一个(这里是第 7 个)。沿逆时针方向移动外表面(轮廓)(在每个顶点处选择最右边的出弧):7-6-5-4-3-2-1-7。从主列表中删除访问过的弧。

从主列表中获取任何弧线,通过第一个内面,遵循右手法则(即 7-8-5-6-7),删除访问过的弧线。

重复直到主列表为空。

对断开的组件重复所有过程 (11-12-13-14)

于 2012-09-04T11:56:04.310 回答