CGAL 5.3 - 3D Fast Intersection and Distance Computation (AABB Tree)
CGAL::AABB_face_graph_triangle_primitive< FaceGraph, VertexPointPMap, OneFaceGraphPerTree, CacheDatum > Class Template Reference

#include <CGAL/AABB_face_graph_triangle_primitive.h>

Definition

template<class FaceGraph, class VertexPointPMap = Default, class OneFaceGraphPerTree = Tag_true, class CacheDatum = Tag_false>
class CGAL::AABB_face_graph_triangle_primitive< FaceGraph, VertexPointPMap, OneFaceGraphPerTree, CacheDatum >

Primitive type for a facet of a polyhedral surface.

It wraps a handle to a facet of a polyhedron to a 3D triangle. The polyhedron from which the primitive is built should not be deleted while the AABB tree holding the primitive is in use. The triangle type of the primitive (Datum) is CGAL::Kernel_traits< boost::property_traits< VertexPointPMap >::value_type >::Kernel::Triangle_3.

Is Model Of:
AABBPrimitiveWithSharedData
Template Parameters
FaceGraphis a model of the face graph concept.
VertexPointPMapis a property map with boost::graph_traits<FaceGraph>::vertex_descriptor as key type and a CGAL Kernel Point_3 as value type. The default is typename boost::property_map< FaceGraph,vertex_point_t>::const_type.
OneFaceGraphPerTreeis either CGAL::Tag_true or CGAL::Tag_false. In the former case, we guarantee that all the primitives will be from a common FaceGraph 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_halfedge_graph_segment_primitive<HalfedgeGraph,OneHalfedgeGraphPerTree,CacheDatum>
Examples:
AABB_tree/AABB_face_graph_triangle_example.cpp, AABB_tree/AABB_insertion_example.cpp, AABB_tree/AABB_polyhedron_facet_distance_example.cpp, AABB_tree/AABB_polyhedron_facet_intersection_example.cpp, and AABB_tree/AABB_ray_shooting_example.cpp.

Public Member Functions

template<class Iterator >
 AABB_face_graph_triangle_primitive (Iterator it, const FaceGraph &graph, VertexPointPMap vppm)
 constructs a primitive. More...
 
 AABB_face_graph_triangle_primitive (face_descriptor fd, const FaceGraph &graph, VertexPointPMap vppm)
 constructs a primitive. More...
 

Static Public Member Functions

static unspecified_type construct_shared_data (FaceGraph &graph)
 If OneFaceGraphPerTree is CGAL::Tag_true, constructs a Shared_data object from a reference to the polyhedon graph.
 

Types

typedef boost::property_traits< VertexPointPMap >::value_type Point
 The point type.
 
typedef Kernel_traits< Point >::Kernel::Triangle_3 Datum
 Geometric data type.
 
unspecified_type Id
 Id type: More...
 

Constructor & Destructor Documentation

◆ AABB_face_graph_triangle_primitive() [1/2]

template<class FaceGraph , class VertexPointPMap = Default, class OneFaceGraphPerTree = Tag_true, class CacheDatum = Tag_false>
template<class Iterator >
CGAL::AABB_face_graph_triangle_primitive< FaceGraph, VertexPointPMap, OneFaceGraphPerTree, CacheDatum >::AABB_face_graph_triangle_primitive ( Iterator  it,
const FaceGraph graph,
VertexPointPMap  vppm 
)

constructs a primitive.

Template Parameters
Iteratoran input iterator with Id as value type.

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

◆ AABB_face_graph_triangle_primitive() [2/2]

template<class FaceGraph , class VertexPointPMap = Default, class OneFaceGraphPerTree = Tag_true, class CacheDatum = Tag_false>
CGAL::AABB_face_graph_triangle_primitive< FaceGraph, VertexPointPMap, OneFaceGraphPerTree, CacheDatum >::AABB_face_graph_triangle_primitive ( face_descriptor  fd,
const FaceGraph graph,
VertexPointPMap  vppm 
)

constructs a primitive.

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

Member Data Documentation

◆ Id

template<class FaceGraph , class VertexPointPMap = Default, class OneFaceGraphPerTree = Tag_true, class CacheDatum = Tag_false>
unspecified_type CGAL::AABB_face_graph_triangle_primitive< FaceGraph, VertexPointPMap, OneFaceGraphPerTree, CacheDatum >::Id

Id type:

  • boost::graph_traits<FaceGraph>::face_descriptor if OneFaceGraphPerTree is CGAL::Tag_true
  • std::pair<boost::graph_traits<FaceGraph>::face_descriptor, const FaceGraph*> if OneFaceGraphPerTree is CGAL::Tag_false