我使用 Three.js 开发一个网站,用户可以在其中放置盒子/墙壁。放置一堵墙后,我试图检测由盒子集合形成的所有房间。为此,我假设所有这些都是二维的。
这是如何放置盒子的示例。我正在处理实际对象的边界框。盒子彼此相连的点是相等的。
我的目标是获取图像中的所有红色和紫色点,以便稍后绘制代表房间轮廓的多边形。盒子和形成的房间的数量没有任何限制。
我已经尝试过一些事情。但我只达到了大约 60-70% 的案例有效的程度。
我目前的方法是创建一个比总边界稍大的形状。并使用每个框的边界框点在该形状中创建一个孔。之后,我从这个形状创建一个网格,并获取共享 2 个坐标的所有多边形和组多边形,直到我在上面的示例中拥有 2 个组。
这适用于很多情况。但三角测量似乎并不总是产生有效的结果。
我如何修改我的方法以更好地工作,或者什么是更好的方法来实现这一目标?
换句话说,您希望找到多边形中的所有孔(房间)。 如果是的话,最简单的方法是使用任何现有的 poly-bool 库。
您需要将所有孔合并。