\( \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 4.8 - 3D Fast Intersection and Distance Computation (AABB Tree)

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
List of all members | Public Member Functions | Static Public Member Functions
CGAL::AABB_halfedge_graph_segment_primitive< HalfedgeGraph, VertexPointPMap, OneHalfedgeGraphPerTree, CacheDatum > Class Template Reference
AABB Tree 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).

Is Model Of:
  `AABBPrimitive` if `OneHalfedgeGraphPerTree` is `CGAL::Tag_false`, and `AABBPrimitiveWithSharedData` if `OneHalfedgeGraphPerTree` is `CGAL::Tag_true`.

Template Parameters

  HalfedgeGraph | is a model of the halfedge graph concept. as key type and a CGAL Kernel `Point_3` as value type.
  VertexPointPMap | is a property map with `boost::graph_traits<HalfedgeGraph>::vertex_descriptor`. The default is `typename boost::property_map< HalfedgeGraph,vertex_point_t>::type`.
  OneHalfedgeGraphPerTree | is 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`.
  CacheDatum | is 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

  Iterator | is 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)`.