fix default point property map used in BGL primitives

This commit is contained in:
Sébastien Loriot 2015-01-19 11:57:43 +01:00
parent 4d0b730f62
commit 67414ef0c8
3 changed files with 17 additions and 22 deletions

View File

@ -54,31 +54,21 @@ namespace CGAL {
*\sa `AABB_halfedge_graph_segment_primitive<HalfedgeGraph,OneHalfedgeGraphPerTree,CacheDatum>`
*/
template < class FaceGraph,
class VertexPointPMap = Default,
class VertexPointPMap = typename boost::property_map< FaceGraph, vertex_point_t>::type,
class OneFaceGraphPerTree = Tag_true,
class CacheDatum=Tag_false >
class AABB_face_graph_triangle_primitive
#ifndef DOXYGEN_RUNNING
: public AABB_primitive<typename boost::graph_traits<FaceGraph>::face_descriptor,
Triangle_from_face_descriptor_property_map<
FaceGraph,
typename Default::Get<VertexPointPMap,
typename boost::property_map< FaceGraph,
vertex_point_t>::type >::type>,
One_point_from_face_descriptor_property_map<
FaceGraph,
typename Default::Get<VertexPointPMap,
typename boost::property_map< FaceGraph,
vertex_point_t>::type >::type>,
Triangle_from_face_descriptor_property_map<FaceGraph, VertexPointPMap>,
One_point_from_face_descriptor_property_map<FaceGraph, VertexPointPMap>,
OneFaceGraphPerTree,
CacheDatum >
#endif
{
typedef typename Default::Get<VertexPointPMap, typename boost::property_map< FaceGraph, vertex_point_t>::type >::type VertexPointPMap_;
typedef typename boost::graph_traits<FaceGraph>::face_descriptor Id_;
typedef Triangle_from_face_descriptor_property_map<FaceGraph,VertexPointPMap_> Triangle_property_map;
typedef One_point_from_face_descriptor_property_map<FaceGraph,VertexPointPMap_> Point_property_map;
typedef Triangle_from_face_descriptor_property_map<FaceGraph,VertexPointPMap> Triangle_property_map;
typedef One_point_from_face_descriptor_property_map<FaceGraph,VertexPointPMap> Point_property_map;
typedef AABB_primitive< Id_,
Triangle_property_map,

View File

@ -84,7 +84,7 @@ template < class HalfedgeGraph,
class VertexPointPMap >
struct Segment_from_edge_descriptor_property_map{
Segment_from_edge_descriptor_property_map()
Segment_from_edge_descriptor_property_map() : m_graph(NULL)
{}
Segment_from_edge_descriptor_property_map(HalfedgeGraph* g)
@ -126,9 +126,12 @@ Segment_from_edge_descriptor_property_map(HalfedgeGraph* g)
template <class FaceGraph,
class VertexPointPMap>
struct One_point_from_face_descriptor_property_map{
One_point_from_face_descriptor_property_map() : m_graph(NULL)
{}
One_point_from_face_descriptor_property_map(FaceGraph* g = NULL)
One_point_from_face_descriptor_property_map(FaceGraph* g)
: m_graph( const_cast<typename boost::remove_const<FaceGraph>::type*>(g) )
, m_vppm( get(vertex_point, *m_graph) )
{}
One_point_from_face_descriptor_property_map(FaceGraph* g, VertexPointPMap vppm )
@ -159,10 +162,12 @@ struct One_point_from_face_descriptor_property_map{
template < class HalfedgeGraph,
class VertexPointPMap >
struct Source_point_from_edge_descriptor{
Source_point_from_edge_descriptor(
HalfedgeGraph* g = NULL ) :
m_graph( const_cast<typename boost::remove_const<HalfedgeGraph>::type*>(g) ),
m_vppm( get(vertex_point, *m_graph) )
Source_point_from_edge_descriptor() : m_graph(NULL)
{}
Source_point_from_edge_descriptor(HalfedgeGraph* g)
: m_graph( const_cast<typename boost::remove_const<HalfedgeGraph>::type*>(g) )
, m_vppm( get(vertex_point, *m_graph) )
{}
Source_point_from_edge_descriptor(

View File

@ -34,7 +34,7 @@ int main()
CGAL::Euler::make_tetrahedron(m, p, q, r, s);
// constructs AABB tree
Tree tree(m.faces_begin(),m.faces_end(),m);
Tree tree(faces(m).first, faces(m).second, m);
// constructs segment query
Point a(-0.2, 0.2, -0.2);