Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] error in using CGAL::grid_simplify_point_set

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] error in using CGAL::grid_simplify_point_set


Chronological Thread 
  • From: tina rumi <>
  • To:
  • Subject: Re: [cgal-discuss] error in using CGAL::grid_simplify_point_set
  • Date: Tue, 8 Dec 2009 15:10:45 -0500
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=wKVipXd/E+AcYLQKY8wJmqK8JH9bsh2mZ2DSHwxfJT0K+WzJ9oacUKmvmTZtefCi+w OqarGquHfZ0sjj2rhJW0AynV9kQLtU2PD0XhBg0BvTCL4J14+JeI+ZvSDoY2xS0/PlOe LvBqS7IopMrP+Jdf0gu+KwMGWGLz+2N7lYLOk=

Hi Nad,

Thanks a lot for your help. I am getting another error when I am running your code. here is the error that I got:

1>Compiling...
1>cloud_points.cpp
1>c:\cgal\cgal-3.5\include\cgal\grid_simplify_point_set.h(61) : error C2039: 'x' : is not a member of 'std::pair<_Ty1,_Ty2>'
1>        with
1>        [
1>            _Ty1=Point,
1>            _Ty2=Vector
1>        ]
1>        c:\cgal\cgal-3.5\include\cgal\grid_simplify_point_set.h(59) : while compiling class template member function 'bool CGAL::CGALi::Less_epsilon_points_3<Point_3>::operator ()(const Point_3 &,const Point_3 &) const'
1>        with
1>        [
1>            Point_3=Enriched_point
1>        ]
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\set(48) : see reference to class template instantiation 'CGAL::CGALi::Less_epsilon_points_3<Point_3>' being compiled
1>        with
1>        [
1>            Point_3=Enriched_point
1>        ]
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\xtree(22) : see reference to class template instantiation 'std::_Tset_traits<_Kty,_Pr,_Alloc,_Mfl>' being compiled
1>        with
1>        [
1>            _Kty=Enriched_point,
1>            _Pr=CGAL::CGALi::Less_epsilon_points_3<Enriched_point>,
1>            _Alloc=std::allocator<PointVectorPair>,
1>            _Mfl=false
1>        ]
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\xtree(63) : see reference to class template instantiation 'std::_Tree_nod<_Traits>' being compiled
1>        with
1>        [
1>            _Traits=std::_Tset_traits<Enriched_point,CGAL::CGALi::Less_epsilon_points_3<Enriched_point>,std::allocator<PointVectorPair>,false>
1>        ]
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\xtree(89) : see reference to class template instantiation 'std::_Tree_ptr<_Traits>' being compiled
1>        with
1>        [
1>            _Traits=std::_Tset_traits<Enriched_point,CGAL::CGALi::Less_epsilon_points_3<Enriched_point>,std::allocator<PointVectorPair>,false>
1>        ]
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\xtree(107) : see reference to class template instantiation 'std::_Tree_val<_Traits>' being compiled
1>        with
1>        [
1>            _Traits=std::_Tset_traits<Enriched_point,CGAL::CGALi::Less_epsilon_points_3<Enriched_point>,std::allocator<PointVectorPair>,false>
1>        ]
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\set(57) : see reference to class template instantiation 'std::_Tree<_Traits>' being compiled
1>        with
1>        [
1>            _Traits=std::_Tset_traits<Enriched_point,CGAL::CGALi::Less_epsilon_points_3<Enriched_point>,std::allocator<PointVectorPair>,false>
1>        ]
1>        c:\cgal\cgal-3.5\include\cgal\grid_simplify_point_set.h(99) : see reference to class template instantiation 'std::set<_Kty,_Pr>' being compiled
1>        with
1>        [
1>            _Kty=Enriched_point,
1>            _Pr=CGAL::CGALi::Less_epsilon_points_3<Enriched_point>
1>        ]
1>        c:\cgal\cgal-3.5\include\cgal\grid_simplify_point_set.h(154) : see reference to class template instantiation 'CGAL::Epsilon_point_set_3<Point_3>' being compiled
1>        with
1>        [
1>            Point_3=Enriched_point
1>        ]
1>        c:\cgal\cgal-3.5\include\cgal\grid_simplify_point_set.h(190) : see reference to function template instantiation 'ForwardIterator CGAL::grid_simplify_point_set<ForwardIterator,PointPMap,CGAL::Filtered_kernel<CK>>(ForwardIterator,ForwardIterator,PointPMap,double,const Kernel &)' being compiled
1>        with
1>        [
1>            ForwardIterator=std::_Vector_iterator<PointVectorPair,std::allocator<PointVectorPair>>,
1>            PointPMap=CGAL::First_of_pair_property_map<PointVectorPair>,
1>            CK=CGAL::Simple_cartesian<double>,
1>            Kernel=CGAL::Filtered_kernel<CGAL::Simple_cartesian<double>>
1>        ]
1>        f:\fingerprint\codes\cloud_points\cloud_points\cloud_points.cpp(203) : see reference to function template instantiation 'ForwardIterator CGAL::grid_simplify_point_set<std::_Vector_iterator<_Ty,_Alloc>,CGAL::First_of_pair_property_map<Pair>>(ForwardIterator,ForwardIterator,PointPMap,double)' being compiled
1>        with
1>        [
1>            ForwardIterator=std::_Vector_iterator<PointVectorPair,std::allocator<PointVectorPair>>,
1>            _Ty=PointVectorPair,
1>            _Alloc=std::allocator<PointVectorPair>,
1>            Pair=PointVectorPair,
1>            PointPMap=CGAL::First_of_pair_property_map<PointVectorPair>
1>        ]
1>c:\cgal\cgal-3.5\include\cgal\grid_simplify_point_set.h(62) : error C2039: 'y' : is not a member of 'std::pair<_Ty1,_Ty2>'
1>        with
1>        [
1>            _Ty1=Point,
1>            _Ty2=Vector
1>        ]
1>c:\cgal\cgal-3.5\include\cgal\grid_simplify_point_set.h(63) : error C2039: 'z' : is not a member of 'std::pair<_Ty1,_Ty2>'
1>        with
1>        [
1>            _Ty1=Point,
1>            _Ty2=Vector
1>        ]
1>c:\cgal\cgal-3.5\include\cgal\grid_simplify_point_set.h(63) : error C2661: 'std::pair<_Ty1,_Ty2>::pair' : no overloaded function takes 3 arguments
1>        with
1>        [
1>            _Ty1=Point,
1>            _Ty2=Vector
1>        ]
1>c:\cgal\cgal-3.5\include\cgal\grid_simplify_point_set.h(64) : error C2039: 'x' : is not a member of 'std::pair<_Ty1,_Ty2>'
1>        with
1>        [
1>            _Ty1=Point,
1>            _Ty2=Vector
1>        ]
1>c:\cgal\cgal-3.5\include\cgal\grid_simplify_point_set.h(65) : error C2039: 'y' : is not a member of 'std::pair<_Ty1,_Ty2>'
1>        with
1>        [
1>            _Ty1=Point,
1>            _Ty2=Vector
1>        ]
1>c:\cgal\cgal-3.5\include\cgal\grid_simplify_point_set.h(66) : error C2039: 'z' : is not a member of 'std::pair<_Ty1,_Ty2>'
1>        with
1>        [
1>            _Ty1=Point,
1>            _Ty2=Vector
1>        ]
1>c:\cgal\cgal-3.5\include\cgal\grid_simplify_point_set.h(66) : error C2661: 'std::pair<_Ty1,_Ty2>::pair' : no overloaded function takes 3 arguments
1>        with
1>        [
1>            _Ty1=Point,
1>            _Ty2=Vector
1>        ]
1>Build log was saved at "file://f:\fingerprint\codes\cloud_points\cloud_points\Debug\BuildLog.htm"
1>cloud_points - 8 error(s), 0 warning(s)
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========


Thank you,
Tina


On Tue, Dec 8, 2009 at 12:57 PM, Nader SALMAN <> wrote:
A correction , here you go :

// kernel
typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel;

// Simple geometric types
typedef Kernel::FT FT;
typedef Kernel::Point_3 Point;
typedef Kernel::Vector_3 Vector;


// Point with normal vector stored in a std::pair.
typedef std::pair<Point, Vector> PointVectorPair;
typedef std::vector<PointVectorPair> PointList;


PointList points // Type of input point set


// simplification by clustering using erase-remove idiom
double cell_size = 0.001;

PointList::iterator unwanted_points_begin = CGAL::grid_simplify_point_set(points.begin(), points.end(), CGAL::First_of_pair_property_map<PointVectorPair>(), cell_size);

// delete unwanted points

points.erase(
unwanted_points_begin , points.end());

// Optional: after erase(), use Scott Meyer's "swap trick" to trim excess capacity
PointList(points).swap(points);

Sorry for the earlier message,

Cheers,
Nad.
Nader SALMAN

Nader SALMAN a écrit :
Hi Tina,

thank you for your interest in CGAl and for using the PSP package.

here is how you should do it in general :

// kernel
typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel;

// Simple geometric types
typedef Kernel::FT FT;
typedef Kernel::Point_3 Point;
typedef Kernel::Vector_3 Vector;


// Point with normal vector stored in a std::pair.
typedef std::pair<Point, Vector> PointVectorPair;
typedef std::vector<PointVectorPair> PointList;


CGAL::grid_simplify_point_set(points.begin(), points.end(),
                                               CGAL::First_of_pair_property_map<PointVectorPair>(),
                                               cell_size);



in your case it would be :

 // simplification by clustering using erase-remove idiom
  double cell_size = 0.001;

  points.erase(CGAL::grid_simplify_point_set(points.begin(), points.end(),                                CGAL::First_of_pair_property_map<PointVectorPair>(), cell_size), points.end());


  // Optional: after erase(), use Scott Meyer's "swap trick" to trim excess capacity
  std::vector<Point>(points).swap(points);

Hope this helped!

Cheers,
Nad.
Nader SALMAN
Geometrica Lab, Byron Y308
INRIA Sophia Antipolis (FRANCE)

Tel: +33(0)4 9238 7161   Fax: +33(0)4 9715 5395   


http://www-sop.inria.fr/members/Nader.Salman


tina rumi a écrit :
Hi all,

I am trying to use following function:

points.erase(CGAL::grid_simplify_point_set(points.begin(), points.end(), cell_size),
               points.end());



the type that I am using for points is :

// types
typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel;
typedef Kernel::Point_3 Point;
typedef Kernel::Vector_3 Vector;

// Point with normal vector stored in a std::pair.
typedef std::pair<Point, Vector> PointVectorPair;

std::list<PointVectorPair> points;

but it caused error. I want to keep this type for points. Do you have any suggestion to fix it.

Thank you,
Tina




Archive powered by MHonArc 2.6.16.

Top of Page