从盒子列表中检测房间/封闭空间

问题描述 投票:0回答:1

我使用 Three.js 开发一个网站,用户可以在其中放置盒子/墙壁。放置一堵墙后,我试图检测由盒子集合形成的所有房间。为此,我假设所有这些都是二维的。

enter image description here

这是如何放置盒子的示例。我正在处理实际对象的边界框。盒子彼此相连的点是相等的。

我的目标是获取图像中的所有红色和紫色点,以便稍后绘制代表房间轮廓的多边形。盒子和形成的房间的数量没有任何限制。

我已经尝试过一些事情。但我只达到了大约 60-70% 的案例有效的程度。

我目前的方法是创建一个比总边界稍大的形状。并使用每个框的边界框点在该形状中创建一个孔。之后,我从这个形状创建一个网格,并获取共享 2 个坐标的所有多边形和组多边形,直到我在上面的示例中拥有 2 个组。

这适用于很多情况。但三角测量似乎并不总是产生有效的结果。

我如何修改我的方法以更好地工作,或者什么是更好的方法来实现这一目标?

three.js cad
1个回答
0
投票

换句话说,您希望找到多边形中的所有孔(房间)。 如果是的话,最简单的方法是使用任何现有的 poly-bool 库。

您需要将所有孔合并。

© www.soinside.com 2019 - 2024. All rights reserved.