计算机的优势在于复杂的计算,但是几何学要处理的不仅仅是计算,而且几何学中会涉及很多几何基元(geometric prmitives),在编写程序、实现算法的时候,这些基本的几何基元会影响你程序的可移植性以及后续代码的改进。而且在由于计算机存储的舍入误差(round off error),精确计算对于计算机来说需要额外处理,如果不做另外的处理,也许你很难用计算机判断三条直线是否交于一点。而且假设数据精度有限,则计算几何相应的算法都需要根据精度作调整。这些复杂的问题,让做研究的人头痛不已,开源库CGAL便是为了解决这个问题。
CGAL全称是Computer Geometry Algorithms Libarary,主页是http://www.cgal.org/。
这个开源库是用C++写的,因此代码的适用性很好,虽然继承以及模板造成了代码的阅读难度增加,但是使用起来确实比较方便。
它提供基础的2维、3维甚至d维的几何基元,如vector, segment, line, plane等等。
提供的算法有基本的计算几何方面的重要算法,如2/3d convex hull, 2/3d triangluation, 2/3d alpah shape, mesh,以及polygon等相关的算法。
另外该库也提供基础的搜索数据结构,其使用的数据结构类似于Kd tree,但提供的功能更丰富,更适合于计算几何方面的操作。