Jonathan Richard Shewchuk的德罗奈三角化(Delaunay Triangulation) 崩溃(Crash)问题
研究网格化的同学一定知道德罗奈三角化(Delaunay Triangulation)方法,德罗奈(Delaunay)三角化算法从计算几何算法角度来看,难度不大,实现起来也不困难,但在实际工程中,自己写的德罗奈算法会出现各种问题,主要原因就是浮点精度导致的各种算法失效(蝴蝶效应啊),所以大批科研人员不自己写或者干脆放弃自己的德罗奈代码(me too!),转而直接使用Jonathan Richard Shewchuk写的三角化代码。
不得不说Jonathan Richard Shewchuk的代码就是鲁棒,毕竟大牛是卡内基和伯克利出品的,必属精品。虽然菜鸟们也会在调用其API时得到各种crash,但主要原因是你传入的点可能会有重叠,或者其它参数错误,因为Jonathan 的代码是C的代码,所以他没有抛出异常的措施,所以一旦参数错误你所得到的就是无情的crash,这一点在调用API之前一定要格外小心,尤其是我们在写工程软件不是学校代码(school code)的时候。
要使用Jonathan Richard Shewchuk的三角化函数,需要将
triangle.c 和 triangle.h文件导入你的项目工程。当然,需要注意的是当导入triangle.c到你的Visual Studio工程时,它默认使用C编译器,而不是C++编译器。所以如果你的工程是C++工程,而你的C++代码要调用triangulate函数时,别