Hi Tina,
Could you please post your complete code, so we can try to reproduce
the compilation error below.
Best regards,
Laurent Saboret
tina rumi wrote:
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
|