我正在处理与激光切割部件相关的平面,为此我希望找到一种算法,将部件分解为描述表面的细分矩形多边形(作为3d渲染的基础)。
我工作的部件始终围绕周边观察直角,并始终观察内部的矩形切口。这是澄清
的布尔网格的一个例子 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
2 * * * T T T T * T T T T T * T T T T * * *
1 T * T T T T T T T T T T T T T T T T T * T
0 T * T T T T T T T T T T T T T T T T T T T
9 T T T T T T T T T T T T T T T T T T T T T
8 T T T T T * * * * * T * * * * * T T T T T
7 T T T T T T T T T T T T T T T T T T T T T
6 T T T T * * T T T * * * T T T * * T T T T
5 T * T T * * T T T * * * T T T * * T T * T
4 T * T T T T T T T T T T T T T T T T T * T
3 T * T T T * * * * * T * * * * * T T T * T
2 T * T T T * * * * * T * * * * * T T T T T
1 T T T T T * * * * * T * * * * * T T T T T
0 T T T T T T T T T T T T T T T T T T T T T
星号{*}索引空白区域,内部矩形或直角周长。
此处大小为(21,13)的网格与物理维度的1:1不匹配,它只是边界[all(x),all(y)]生成的可视化指南。与此示例对应的形状类似于(顶部)
输入数据是一个闭环的顶点列表,描述了周边,以及一组内部切口的闭环列表。
这是另一个简单的例子,输入形状和我希望到达的结果类型
单槽平面需要四个矩形来描述它。顺便说一下,很明显,这组可能的细分是> 1.对于图形应用来说,更有意思的是找到避免制作薄带并尽可能少地到达零件的解决方案。
我通过迭代管理一个解决方案并查询网格中占用的特殊范围,但我非常确定有更好的方法。如果有人知道这样做的明智之举,我会很高兴知道。