假设您有一个 3 维对象,以某种常见文件格式表示为 3d 网格。您将如何设计一种算法来将网格分解为一个或多个 2d“网”——即可以切割和折叠以创建原始 3d 对象的二维表示。
除其他事项外,该算法需要考虑:
- 任何给定对象的多种可能分解
- 处理将网格装入固定尺寸的画布(纸张)。
- 识别网络中的两个面板何时重叠(因此无效)。
- 如果由于重叠或页面大小限制而无法将网格表示为单个网络,则将它们分解为多个网络。
- 在适当的位置生成标签,用于连接相邻的面。
明显的退化情况是简单地为每个面创建一个网,在一半的边缘上带有标签。显然,这并不理想:理想情况是单个连续网络。复杂形状的现实可能在中间的某个地方。
我意识到找到最佳网络(最少的网络/最少的页面)可能在计算上很昂贵,但是找到“足够好”的网络的一个很好的启发式就足够了。