在2D Delaunay三角剖分中插入顶点时出错

时间:2014-02-09 14:45:40

标签: c++ cgal

我想将N随机顶点添加到2D Delaunay三角剖分中。我的代码是:

template <class Kernel, class TDS>
class DT : public CGAL::Delaunay_triangulation_2<Kernel,TDS>
{
public:
typedef typename Kernel::FT FT;
typedef typename Kernel::Point_2    Point;
typedef typename CGAL::Delaunay_triangulation_2<Kernel,TDS> Dt2;

// random number between zero and max
FT r(FT max = 1.0) { return max * (FT)rand() / (FT)RAND_MAX; }

void generators_random(unsigned int nb_generators)
{
   Dt2::clear();
   Point p(r(), r());
   for(unsigned int i = 0; i < nb_generators; i++)
        insert(p);
}

但是当我调用generators_random方法时,编译器会给出这个错误:

/home/lucas/Algorithmes géometriques/TP2/src/dt.h:83:12: note:
cannot convert ‘p’ (type ‘DT<CGAL::Epick,CGAL::Triangulation_data_structure_2
<My_vertex_base<CGAL::Triangulation_vertex_base_2<CGAL::Epick> >, 
CGAL::Triangulation_face_base_2<CGAL::Epick> > >::Point {aka
CGAL::Point_2<CGAL::Epick>}’) to type ‘std::ostream& {aka 
std::basic_ostream<char>&}’ insert(p);

我没有尝试使用FT,而是试图加倍,浮动,但没有任何效果。怎么了?

感谢。

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题。我没有使用insert(),而是使用push_back()作为记录,这是工作版本:

// random number between zero and max
FT r(FT max = 1.0) { return max * (FT)rand() / (FT)RAND_MAX; }

// random (uniform)
void generators_random(unsigned int nb_generators)
{
    Dt2::clear();
    for(unsigned int i = 0; i < nb_generators; i++)
        this->push_back(Point(r(), r()));
}