三角剖分算法

shy*_*cha 2 c algorithm math triangulation computational-geometry

我决定创建一个简单的演示,将多边形划分为三角形集.到目前为止我得到的是:

给出顺序顶点列表(P1)形成多边形边缘(多边形在多数情况下不是凸面); 需要一个三角形集

遍历多边形P1内的所有顶点并找到一个(v),这将满足下一个子句:

  1. 从多边形中移除v并将新的一个保存到P2前一个顶点到v连接到它的下一个顶点,形成一条不穿过任何P2边的线

  2. v不在P2内

如果满足这些,我们可以用(P2 + 三角形(prev(v),v,next(v))替换P1 并重复此动作,直到P1包含多于3个顶点.

所以,问题是:这个算法是否正确以及如何使用C/C++以最明显和最简单的方式实现它?

lhf*_*lhf 5

我想你正在描述耳朵剪裁方法.http://cs.smith.edu/~orourke/books/ftp.html上有该方法的代码; 这是C中计算几何一书中描述的代码.