CGAL 6.1 - Fast Intersection and Distance Computation (AABB Tree)

Loading...
Searching...
No Matches
List of all members | Public Member Functions | Static Public Member Functions
CGAL::AABB_halfedge_graph_segment_primitive< HalfedgeGraph, VertexPointPMap, OneHalfedgeGraphPerTree, CacheDatum > Class Template Reference
Reference Manual

`#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 an 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`
  `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>::const_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,VertexPointPMap,OneFaceGraphPerTree,CacheDatum>`
  `AABB_segment_primitive_3<Iterator,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.
| AABB_halfedge_graph_segment_primitive (edge_descriptor ed, const HalfedgeGraph &graph, VertexPointPMap vppm)
| constructs a primitive.

## Static Public Member Functions
static unspecified_type | construct_shared_data (HalfedgeGraph &graph)
| If `OneHalfedgeGraphPerTree` 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 >::const_type >::value_type | Point
| The point type.
typedef Kernel_traits< Point >::Kernel::Segment_3 | Datum
| Geometric data type.
unspecified_type | Id
| Id type:

## Constructor & Destructor Documentation

## ◆ AABB_halfedge_graph_segment_primitive() [1/2]

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

## ◆ AABB_halfedge_graph_segment_primitive() [2/2]

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 | ( | edge_descriptor | ed,
|  | 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)`.

## Member Data Documentation

## ◆ Id

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

unspecified_type CGAL::AABB_halfedge_graph_segment_primitive< HalfedgeGraph, VertexPointPMap, OneHalfedgeGraphPerTree, CacheDatum >::Id

Id type:

- `boost::graph_traits<HalfedgeGraph>::edge_descriptor` if `OneHalfedgeGraphPerTree` is `Tag_true`
- `std::pair<boost::graph_traits<HalfedgeGraph>::edge_descriptor, const HalfedgeGraph*>` if `OneHalfedgeGraphPerTree` is `Tag_false`