Subject: CGAL users discussion list
List archive
- From: Giles Bathgate <>
- To:
- Subject: Re: [cgal-discuss] Find the perimeter of a shell with no volume
- Date: Sun, 19 Jun 2011 14:28:09 +0100
- 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:content-transfer-encoding; b=DvTBPmvnxoiYL/0SvltYMvVckj4QRrBB8QjhoL2dne/2ToL6zhb8wfc9sVVMRCnbEV wss5m1iIwG3De5/S/rJIXCVxuIJN8RJHh1gQYEeI7f+/dfwIV6QBveUnEdylE2fl3EVy AfmIbMSouC4F0HP2SBVbzppPE1BD5Gz8qQ1bU=
On 7 June 2011 09:42, Sebastien Loriot (GeometryFactory)
<>
wrote:
> One solution is to look at all halffacets and count the number of time
> edges contribute to the facet. If an edge contributes only twice then
> it is on the boundary.
Hi I tried compiling your example against CGAL 3.6.1 using:
gcc test.cpp -lCGAL -lmpfr -lgmp -frounding-math -o test
I get two compile errors, one on line 12 and the other on line 37
(full compile error log below). They both seem to be related to the
operator<
I don't understand why the comparison h < h->twin() is made so I can't
easily work around the problem, and I would like to be able to use
your code with 3.6.1
Cheers
Giles.
test.cpp: In function
‘CGAL::Nef_polyhedron_3<CGAL::Simple_cartesian<CGAL::Gmpq>
>::Halfedge_const_handle
get_edge_id(CGAL::Nef_polyhedron_3<CGAL::Simple_cartesian<CGAL::Gmpq>
>::Halfedge_const_handle)’:
test.cpp:12:21: error: no match for ‘operator<’ in ‘h <
h.CGAL::internal::In_place_list_const_iterator<T, Alloc>::operator->
[with T =
CGAL::SNC_in_place_list_svertex<CGAL::SNC_indexed_items::SVertex<CGAL::SNC_structure<CGAL::Simple_cartesian<CGAL::Gmpq>,
CGAL::SNC_indexed_items, bool> > >, Alloc =
std::allocator<CGAL::SNC_in_place_list_svertex<CGAL::SNC_indexed_items::SVertex<CGAL::SNC_structure<CGAL::Simple_cartesian<CGAL::Gmpq>,
CGAL::SNC_indexed_items, bool> > >
>]()->CGAL::SNC_in_place_list_svertex<CGAL::SNC_indexed_items::SVertex<CGAL::SNC_structure<CGAL::Simple_cartesian<CGAL::Gmpq>,
CGAL::SNC_indexed_items, bool> >
>::<anonymous>.CGAL::SNC_indexed_items::SVertex<CGAL::SNC_structure<CGAL::Simple_cartesian<CGAL::Gmpq>,
CGAL::SNC_indexed_items, bool>
>::<anonymous>.CGAL::Halfedge_base<Refs>::twin [with Refs =
CGAL::SNC_structure<CGAL::Simple_cartesian<CGAL::Gmpq>,
CGAL::SNC_indexed_items, bool>,
CGAL::Halfedge_base<Refs>::SVertex_const_handle =
CGAL::internal::In_place_list_const_iterator<CGAL::SNC_in_place_list_svertex<CGAL::SNC_indexed_items::SVertex<CGAL::SNC_structure<CGAL::Simple_cartesian<CGAL::Gmpq>,
CGAL::SNC_indexed_items, bool> > >,
std::allocator<CGAL::SNC_in_place_list_svertex<CGAL::SNC_indexed_items::SVertex<CGAL::SNC_structure<CGAL::Simple_cartesian<CGAL::Gmpq>,
CGAL::SNC_indexed_items, bool> > > > >]()’
/usr/include/CGAL/GMP/Gmpq_type.h:205:1: note: candidates are: bool
CGAL::operator<(const CGAL::Gmpq&, int)
/usr/include/CGAL/GMP/Gmpq_type.h:199:13: note: bool
CGAL::operator<(const CGAL::Gmpq&, double)
/usr/include/CGAL/GMP/Gmpq_type.h:195:1: note: bool
CGAL::operator<(const CGAL::Gmpq&, const CGAL::Gmpq&)
/usr/include/CGAL/GMP/Gmpzf_type.h:561:6: note: bool
CGAL::operator<(const CGAL::Gmpzf&, int)
/usr/include/CGAL/GMP/Gmpzf_type.h:548:6: note: bool
CGAL::operator<(const CGAL::Gmpzf&, const CGAL::Gmpzf&)
/usr/include/CGAL/GMP/Gmpz_type.h:157:1: note: bool
CGAL::operator<(const CGAL::Gmpz&, int)
/usr/include/CGAL/GMP/Gmpz_type.h:145:1: note: bool
CGAL::operator<(const CGAL::Gmpz&, const CGAL::Gmpz&)
/usr/include/CGAL/MP_Float.h:379:6: note: bool
CGAL::operator<(const CGAL::MP_Float&, const CGAL::MP_Float&)
/usr/include/CGAL/Modular_arithmetic/Residue_type.h:297:13: note:
bool CGAL::operator<(const CGAL::Residue&, int)
/usr/include/CGAL/Modular_arithmetic/Residue_type.h:295:13: note:
bool CGAL::operator<(const CGAL::Residue&, const
CGAL::Residue&)
/usr/include/boost/blank.hpp:78:13: note: bool
boost::operator<(const boost::blank&, const boost::blank&)
/usr/include/boost/operators.hpp:133:18: note: bool
boost::operator<(const int&, const CGAL::Gmpq&)
/usr/include/boost/operators.hpp:133:18: note: bool
boost::operator<(const double&, const CGAL::Gmpq&)
In file included from /usr/include/c++/4.5/string:50:0,
from /usr/include/c++/4.5/bits/locale_classes.h:42,
from /usr/include/c++/4.5/bits/ios_base.h:43,
from /usr/include/c++/4.5/ios:43,
from /usr/include/c++/4.5/ostream:40,
from /usr/include/c++/4.5/iostream:40,
from /usr/include/CGAL/basic.h:30,
from /usr/include/CGAL/Cartesian/Cartesian_base.h:27,
from /usr/include/CGAL/Simple_cartesian.h:27,
from test.cpp:1:
/usr/include/c++/4.5/bits/stl_function.h: In member function ‘bool
std::less<_Tp>::operator()(const _Tp&, const _Tp&) const [with _Tp =
CGAL::internal::In_place_list_const_iterator<CGAL::SNC_in_place_list_svertex<CGAL::SNC_indexed_items::SVertex<CGAL::SNC_structure<CGAL::Simple_cartesian<CGAL::Gmpq>,
CGAL::SNC_indexed_items, bool> > >,
std::allocator<CGAL::SNC_in_place_list_svertex<CGAL::SNC_indexed_items::SVertex<CGAL::SNC_structure<CGAL::Simple_cartesian<CGAL::Gmpq>,
CGAL::SNC_indexed_items, bool> > > > >]’:
/usr/include/c++/4.5/bits/stl_tree.h:1184:4: instantiated from
‘std::pair<std::_Rb_tree_iterator<_Val>, bool> std::_Rb_tree<_Key,
_Val, _KeyOfValue, _Compare, _Alloc>::_M_insert_unique(const _Val&)
[with _Key =
CGAL::internal::In_place_list_const_iterator<CGAL::SNC_in_place_list_svertex<CGAL::SNC_indexed_items::SVertex<CGAL::SNC_structure<CGAL::Simple_cartesian<CGAL::Gmpq>,
CGAL::SNC_indexed_items, bool> > >,
std::allocator<CGAL::SNC_in_place_list_svertex<CGAL::SNC_indexed_items::SVertex<CGAL::SNC_structure<CGAL::Simple_cartesian<CGAL::Gmpq>,
CGAL::SNC_indexed_items, bool> > > > >, _Val = std::pair<const
CGAL::internal::In_place_list_const_iterator<CGAL::SNC_in_place_list_svertex<CGAL::SNC_indexed_items::SVertex<CGAL::SNC_structure<CGAL::Simple_cartesian<CGAL::Gmpq>,
CGAL::SNC_indexed_items, bool> > >,
std::allocator<CGAL::SNC_in_place_list_svertex<CGAL::SNC_indexed_items::SVertex<CGAL::SNC_structure<CGAL::Simple_cartesian<CGAL::Gmpq>,
CGAL::SNC_indexed_items, bool> > > > >, int>, _KeyOfValue =
std::_Select1st<std::pair<const
CGAL::internal::In_place_list_const_iterator<CGAL::SNC_in_place_list_svertex<CGAL::SNC_indexed_items::SVertex<CGAL::SNC_structure<CGAL::Simple_cartesian<CGAL::Gmpq>,
CGAL::SNC_indexed_items, bool> > >,
std::allocator<CGAL::SNC_in_place_list_svertex<CGAL::SNC_indexed_items::SVertex<CGAL::SNC_structure<CGAL::Simple_cartesian<CGAL::Gmpq>,
CGAL::SNC_indexed_items, bool> > > > >, int> >, _Compare =
std::less<CGAL::internal::In_place_list_const_iterator<CGAL::SNC_in_place_list_svertex<CGAL::SNC_indexed_items::SVertex<CGAL::SNC_structure<CGAL::Simple_cartesian<CGAL::Gmpq>,
CGAL::SNC_indexed_items, bool> > >,
std::allocator<CGAL::SNC_in_place_list_svertex<CGAL::SNC_indexed_items::SVertex<CGAL::SNC_structure<CGAL::Simple_cartesian<CGAL::Gmpq>,
CGAL::SNC_indexed_items, bool> > > > > >, _Alloc =
std::allocator<std::pair<const
CGAL::internal::In_place_list_const_iterator<CGAL::SNC_in_place_list_svertex<CGAL::SNC_indexed_items::SVertex<CGAL::SNC_structure<CGAL::Simple_cartesian<CGAL::Gmpq>,
CGAL::SNC_indexed_items, bool> > >,
std::allocator<CGAL::SNC_in_place_list_svertex<CGAL::SNC_indexed_items::SVertex<CGAL::SNC_structure<CGAL::Simple_cartesian<CGAL::Gmpq>,
CGAL::SNC_indexed_items, bool> > > > >, int> >]’
/usr/include/c++/4.5/bits/stl_map.h:501:41: instantiated from
‘std::pair<typename std::_Rb_tree<_Key, std::pair<const _Key, _Tp>,
std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename
_Alloc::rebind<std::map<_Key, _Tp, _Compare,
_Alloc>::value_type>::other>::iterator, bool> std::map<_Key, _Tp,
_Compare, _Alloc>::insert(const std::map<_Key, _Tp, _Compare,
_Alloc>::value_type&) [with _Key =
CGAL::internal::In_place_list_const_iterator<CGAL::SNC_in_place_list_svertex<CGAL::SNC_indexed_items::SVertex<CGAL::SNC_structure<CGAL::Simple_cartesian<CGAL::Gmpq>,
CGAL::SNC_indexed_items, bool> > >,
std::allocator<CGAL::SNC_in_place_list_svertex<CGAL::SNC_indexed_items::SVertex<CGAL::SNC_structure<CGAL::Simple_cartesian<CGAL::Gmpq>,
CGAL::SNC_indexed_items, bool> > > > >, _Tp = int, _Compare =
std::less<CGAL::internal::In_place_list_const_iterator<CGAL::SNC_in_place_list_svertex<CGAL::SNC_indexed_items::SVertex<CGAL::SNC_structure<CGAL::Simple_cartesian<CGAL::Gmpq>,
CGAL::SNC_indexed_items, bool> > >,
std::allocator<CGAL::SNC_in_place_list_svertex<CGAL::SNC_indexed_items::SVertex<CGAL::SNC_structure<CGAL::Simple_cartesian<CGAL::Gmpq>,
CGAL::SNC_indexed_items, bool> > > > > >, _Alloc =
std::allocator<std::pair<const
CGAL::internal::In_place_list_const_iterator<CGAL::SNC_in_place_list_svertex<CGAL::SNC_indexed_items::SVertex<CGAL::SNC_structure<CGAL::Simple_cartesian<CGAL::Gmpq>,
CGAL::SNC_indexed_items, bool> > >,
std::allocator<CGAL::SNC_in_place_list_svertex<CGAL::SNC_indexed_items::SVertex<CGAL::SNC_structure<CGAL::Simple_cartesian<CGAL::Gmpq>,
CGAL::SNC_indexed_items, bool> > > > >, int> >, typename
std::_Rb_tree<_Key, std::pair<const _Key, _Tp>,
std::_Select1st<std::pair<const _Key, _Tp> >, _Compare, typename
_Alloc::rebind<std::map<_Key, _Tp, _Compare,
_Alloc>::value_type>::other>::iterator =
std::_Rb_tree_iterator<std::pair<const
CGAL::internal::In_place_list_const_iterator<CGAL::SNC_in_place_list_svertex<CGAL::SNC_indexed_items::SVertex<CGAL::SNC_structure<CGAL::Simple_cartesian<CGAL::Gmpq>,
CGAL::SNC_indexed_items, bool> > >,
std::allocator<CGAL::SNC_in_place_list_svertex<CGAL::SNC_indexed_items::SVertex<CGAL::SNC_structure<CGAL::Simple_cartesian<CGAL::Gmpq>,
CGAL::SNC_indexed_items, bool> > > > >, int> >, std::map<_Key, _Tp,
_Compare, _Alloc>::value_type = std::pair<const
CGAL::internal::In_place_list_const_iterator<CGAL::SNC_in_place_list_svertex<CGAL::SNC_indexed_items::SVertex<CGAL::SNC_structure<CGAL::Simple_cartesian<CGAL::Gmpq>,
CGAL::SNC_indexed_items, bool> > >,
std::allocator<CGAL::SNC_in_place_list_svertex<CGAL::SNC_indexed_items::SVertex<CGAL::SNC_structure<CGAL::Simple_cartesian<CGAL::Gmpq>,
CGAL::SNC_indexed_items, bool> > > > >, int>]’
test.cpp:37:41: instantiated from here
/usr/include/c++/4.5/bits/stl_function.h:230:22: error: no match for
‘operator<’ in ‘__x < __y’
/usr/include/CGAL/GMP/Gmpq_type.h:205:1: note: candidates are: bool
CGAL::operator<(const CGAL::Gmpq&, int)
/usr/include/CGAL/GMP/Gmpq_type.h:199:13: note: bool
CGAL::operator<(const CGAL::Gmpq&, double)
/usr/include/CGAL/GMP/Gmpq_type.h:195:1: note: bool
CGAL::operator<(const CGAL::Gmpq&, const CGAL::Gmpq&)
/usr/include/CGAL/GMP/Gmpzf_type.h:561:6: note: bool
CGAL::operator<(const CGAL::Gmpzf&, int)
/usr/include/CGAL/GMP/Gmpzf_type.h:548:6: note: bool
CGAL::operator<(const CGAL::Gmpzf&, const CGAL::Gmpzf&)
/usr/include/CGAL/GMP/Gmpz_type.h:157:1: note: bool
CGAL::operator<(const CGAL::Gmpz&, int)
/usr/include/CGAL/GMP/Gmpz_type.h:145:1: note: bool
CGAL::operator<(const CGAL::Gmpz&, const CGAL::Gmpz&)
/usr/include/CGAL/MP_Float.h:379:6: note: bool
CGAL::operator<(const CGAL::MP_Float&, const CGAL::MP_Float&)
/usr/include/CGAL/Modular_arithmetic/Residue_type.h:297:13: note:
bool CGAL::operator<(const CGAL::Residue&, int)
/usr/include/CGAL/Modular_arithmetic/Residue_type.h:295:13: note:
bool CGAL::operator<(const CGAL::Residue&, const
CGAL::Residue&)
/usr/include/boost/blank.hpp:78:13: note: bool
boost::operator<(const boost::blank&, const boost::blank&)
/usr/include/boost/operators.hpp:133:18: note: bool
boost::operator<(const int&, const CGAL::Gmpq&)
/usr/include/boost/operators.hpp:133:18: note: bool
boost::operator<(const double&, const CGAL::Gmpq&)
- [cgal-discuss] Find the perimeter of a shell with no volume, gilesbathgate, 06/03/2011
- Re: [cgal-discuss] Find the perimeter of a shell with no volume, Sebastien Loriot (GeometryFactory), 06/07/2011
- Re: [cgal-discuss] Find the perimeter of a shell with no volume, Giles Bathgate, 06/19/2011
- Re: [cgal-discuss] Find the perimeter of a shell with no volume, Sebastien Loriot (GeometryFactory), 06/20/2011
- Re: [cgal-discuss] Find the perimeter of a shell with no volume, Giles Bathgate, 06/20/2011
- Message not available
- Re: [cgal-discuss] Find the perimeter of a shell with no volume, Giles Bathgate, 06/24/2011
- Fwd: [cgal-discuss] Find the perimeter of a shell with no volume, Giles Bathgate, 06/26/2011
- Re: [cgal-discuss] Find the perimeter of a shell with no volume, Giles Bathgate, 06/24/2011
- Message not available
- Re: [cgal-discuss] Find the perimeter of a shell with no volume, Giles Bathgate, 06/20/2011
- Re: [cgal-discuss] Find the perimeter of a shell with no volume, Sebastien Loriot (GeometryFactory), 06/20/2011
- Re: [cgal-discuss] Find the perimeter of a shell with no volume, Giles Bathgate, 06/19/2011
- Re: [cgal-discuss] Find the perimeter of a shell with no volume, Sebastien Loriot (GeometryFactory), 06/07/2011
Archive powered by MHonArc 2.6.16.