我想将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,而是试图加倍,浮动,但没有任何效果。怎么了?
感谢。
答案 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()));
}