三角剖分分为不带约束的三角剖分和带约束的三角剖分
不带约束的三角剖分的使用场景就是空间一离散点,用一个凸包包起来,然后以三角形剖分所有的点,主要有个算法叫做:delaunay三角剖分
带约束的三角剖分有这么一个使用场景:
一多边行无论是凸多边形,还是凹多边形,以三角形的方式剖分,我在工程应用里面,有这么一个需求,给一个多边形的依次的顶点序列,以三角形剖分这个多边形。
我主要参考了两个博客:
http://my.oschina.net/szm/blog/51840
http://blog.csdn.net/yqxx/article/details/6318679
后来使用的算法是:
poly2tri
这个算法貌似很稳健,我把杂乱的点输入进去,竟然可以剖分。
算法使用很简单:
首先需要构建一个多边形:据说这个算法还可以计算带空洞的多边形,多边形里面有洞。
计算三角形
Poly2Tri.triangulate(ardorPolygon);
返回三角形
List<DelaunayTriangle> triangles = ardorPolygon.getTriangles();
详细见Poly2tri这个文件
这个库的地址是:
http://code.google.com/p/poly2tri/source/clones?repo=archive