如问题的标题所示,如何对动态增长的简单多边形进行三角测量,即每当用户或计算机动态添加新顶点时,多边形应再次进行三角测量。因此,在添加每个新顶点之后,不是运行一些三角测量算法,而是对于每个新输入应该采用任何聪明/有效(可能也易于实现)的方式,并且应该采用< = O(n)时间来对多边形进行三角测量。 新添加的顶点将与当前多边形的第一个和最后一个顶点相邻。
答案 0 :(得分:2)
当您插入新顶点并用2替换边时,它们形成的三角形可能会与三角剖分的多个三角形重叠。重叠的三角形形成子多边形。构建此多边形的轮廓并插入新顶点。然后重新连接更新的子多边形。
我猜通过以递归方式探索起始三角形的邻居并检查它们是否重叠,可以有效地找到重叠的三角形。子多边形的轮廓由两个三角形不共享的边缘组成。
答案 1 :(得分:1)
我假设在每一步增加多边形,通过添加顶点C,移除段AB,以及添加段AC和CB。我也假设没有退化。
如果ABC正向风(即多边形被展开"向外"),只需将ABC添加到三角测量中。
否则,考虑先前三角测量中的三角形ABD。如果C在该三角形中,则移除三角形ABD并添加三角形BDC和DAC。如果不是,那么它位于AD侧的子多边形中,或者位于BD侧的子多边形中。删除ABD并递归到适当的子多边形,将C添加到(例如)BD段。递归完成后,像以前一样添加三角形BDC和DAC。
此解决方案依赖于旧多边形和新多边形都是简单的(非自相交)。否则,在递归步骤之后添加三角形可能无效。