\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)
CGAL - 3D Fast Intersection and Distance Computation (AABB Tree)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
CGAL::AABB_halfedge_graph_segment_primitive< HalfedgeGraph, VertexPointPMap, OneHalfedgeGraphPerTree, CacheDatum > Class Template Reference

#include <CGAL/AABB_halfedge_graph_segment_primitive.h>

Definition

template<class HalfedgeGraph, class VertexPointPMap = Default, class OneHalfedgeGraphPerTree = Tag_true, class CacheDatum = Tag_false>
class CGAL::AABB_halfedge_graph_segment_primitive< HalfedgeGraph, VertexPointPMap, OneHalfedgeGraphPerTree, CacheDatum >

Primitive type for a edge of a polyhedral surface.

It wraps an edge_descriptor into a 3D segment. The class model of HalfedgeGraph from which the primitive is built should not be deleted while the AABB tree holding the primitive is in use. The type of the 3D segment is taken from the kernel of the point type which is the value type of VertexPointPMap (using the Kernel_traits mechanism). The segment type of the primitive (Datum) is CGAL::Kernel_traits< boost::property_traits< VertexPointPMap >::value_type >::Kernel::Segment_3.

Is Model Of:
AABBPrimitive if OneHalfedgeGraphPerTree is CGAL::Tag_false, and AABBPrimitiveWithSharedData if OneHalfedgeGraphPerTree is CGAL::Tag_true.
Template Parameters
HalfedgeGraphis a model of the halfedge graph concept. as key type and a CGAL Kernel Point_3 as value type.
VertexPointPMapis a property map with boost::graph_traits<HalfedgeGraph>::vertex_descriptor. The default is typename boost::property_map< HalfedgeGraph,vertex_point_t>::type.
OneHalfedgeGraphPerTreeis either CGAL::Tag_true or CGAL::Tag_false. In the former case, we guarantee that all the primitives will be from a common HalfedgeGraph and some data will be factorized so that the size of the primitive is reduced. In the latter case, the primitives can be from different graphs and extra storage is required in the primitives. The default is CGAL::Tag_true.
CacheDatumis either CGAL::Tag_true or CGAL::Tag_false. In the former case, the datum is stored in the primitive, while in the latter it is constructed on the fly to reduce the memory footprint. The default is CGAL::Tag_false (datum is not stored).
See Also
AABBPrimitive
AABB_primitive<Id,ObjectPropertyMap,PointPropertyMapPolyhedron,ExternalPropertyMaps,CacheDatum>
AABB_face_graph_triangle_primitive<FaceGraph,OneFaceGraphPerTree,CacheDatum>
boost::graph_traits<Polyhedron>
Examples:
AABB_tree/AABB_halfedge_graph_edge_example.cpp, and AABB_tree/AABB_polyhedron_edge_example.cpp.

Public Member Functions

template<class Iterator >
 AABB_halfedge_graph_segment_primitive (Iterator it, const HalfedgeGraph &graph, VertexPointPMap_ vppm)
 Constructs a primitive. More...
 
 AABB_halfedge_graph_segment_primitive (Id id, const HalfedgeGraph &graph, VertexPointPMap_ vppm)
 Constructs a primitive. More...
 

Static Public Member Functions

static unspecified_type construct_shared_data (HalfedgeGraph &graph)
 If OneHalfedgeGraphPerTreeGraphPerTree is CGAL::Tag_true, constructs a Shared_data object from a reference to the halfedge graph.
 

Types

typedef boost::property_traits
< boost::property_map
< HalfedgeGraph,
vertex_point_t >::type >
::value_type 
Point
 The point type.
 
typedef Kernel_traits< Point >
::Kernel::Segment_3 
Datum
 Geometric data type.
 
typedef boost::graph_traits
< HalfedgeGraph >
::edge_descriptor 
Id
 Id type.
 

Constructor & Destructor Documentation

template<class HalfedgeGraph , class VertexPointPMap = Default, class OneHalfedgeGraphPerTree = Tag_true, class CacheDatum = Tag_false>
template<class Iterator >
CGAL::AABB_halfedge_graph_segment_primitive< HalfedgeGraph, VertexPointPMap, OneHalfedgeGraphPerTree, CacheDatum >::AABB_halfedge_graph_segment_primitive ( Iterator  it,
const HalfedgeGraph graph,
VertexPointPMap_  vppm 
)

Constructs a primitive.

Template Parameters
Iteratoris an input iterator with Id as value type. This example gives a way to call this constructor using the insert-by-range method of the class AABB_tree<Traits>. If VertexPointPMap is the default of the class, an additional constructor is available with vppm set to boost::get(vertex_point, graph).
template<class HalfedgeGraph , class VertexPointPMap = Default, class OneHalfedgeGraphPerTree = Tag_true, class CacheDatum = Tag_false>
CGAL::AABB_halfedge_graph_segment_primitive< HalfedgeGraph, VertexPointPMap, OneHalfedgeGraphPerTree, CacheDatum >::AABB_halfedge_graph_segment_primitive ( Id  id,
const HalfedgeGraph graph,
VertexPointPMap_  vppm 
)

Constructs a primitive.

If VertexPointPMap is the default of the class, an additional constructor is available with vppm set to boost::get(vertex_point, graph).