不幸的是,我找不到一个C ++(或C或C#)库,用于在一组点(2D或2.5D)上执行Delaunay三角测量,这些点能够以输入感知的方式传递输出。
也就是说,给定一组点P_1,P_2,... P_N,输出应该包含一组三元组(三角形汤)(i_a,i_b,i_c),其中i_a,i_b和i_c是索引P_i点(因此在1和N之间的数字)。我已经尝试了Fade2D,但我发现它处理输入的方式非常浪费(必须在自己的point2d结构中打包顶点),输出无视输入的索引,提供了坐标集以及这些顶点的另一个排序。
答案 0 :(得分:2)
我是Fade2D的作者,这是一个迟到的答案,我不知道你的问题。在插入之前,您不需要将坐标打包到Point2类中。还有一个insert方法,它采用坐标数组:
void Fade2D :: insert(int numPoints,double * aCoordinates,Point2 ** aHandles);
此方法采用坐标数组(x0,y0,x1,y1,...,xn,yn)并返回具有完全相同顺序的Point2 *指针的向量。这几乎没有开销。为方便起见,您可以使用
Point2 :: setCustomIndex()和
Point2 :: getCustomIndex()
存储和检索自己的索引。