% +------------------------------------------------------------------------+
% | Reference manual page: AABBGeomTraits.tex
% +------------------------------------------------------------------------+
% | 25.02.2009   Author
% | Package: Package
% |
\RCSdef{\RCSAABBGeomTraitsRev}{$Id: header.tex 40270 2007-09-07 15:29:10Z lsaboret $}
\RCSdefDate{\RCSAABBGeomTraitsDate}{$Date: 2007-09-07 17:29:10 +0200 (Ven, 07 sep 2007) $}
% |
\ccRefPageBegin
%%RefPage: end of header, begin of main body
% +------------------------------------------------------------------------+


\begin{ccRefConcept}{AABBGeomTraits}

%% \ccHtmlCrossLink{}     %% add further rules for cross referencing links
%% \ccHtmlIndexC[concept]{} %% add further index entries

\ccDefinition
  
The concept \ccRefName\ defines the requirements for the first template parameter of the class \ccc{AABB_traits<GeomTraits, Primitive>}. It provides predicates and constructors to detect and compute intersections between query objects and the primitives stored in the AABB tree. In addition, it contains  predicates and constructors to compute distances between a point query and the primitives stored in the AABB tree.

\ccTypes

\ccNestedType{Bbox_3}{Bounding box type.}
\ccNestedType{Point_3}{Point type.}

\ccNestedType{Do_intersect_3} 
{A functor object to detect intersections between two geometric objects.
Provides the operators:
\ccc{bool operator()(Type_1 type_1, Type_2 type_2);}
where \ccc{Type_1} and \ccc{Type_2} are relevant types
among \ccc{Ray_3}, \ccc{Segment_3}, \ccc{Line_3}, \ccc{Triangle_3}, \ccc{Plane_3} and \ccc{Bbox_3}. Relevant herein means that a line primitive (ray, segment, line) is tested against a planar or solid primitive (plane, triangle, box), and a solid primitive is tested against another solid primitive (box against box). The operator returns \ccc{true} iff \ccc{type_1} and \ccc{type_2} have a non empty intersection.}

\ccNestedType{Intersect_3} 
{A functor object to construct the intersection between two geometric objects.
Provides the operators:
\ccc{CGAL::Object operator()(Type_1 type_1, Type_2 type_2);} where \ccc{Type_1} and \ccc{Type_2} are any relevant types among \ccc{Ray_3}, \ccc{Segment_3}, \ccc{Line_3},  \ccc{Triangle_3}, \ccc{Plane_3} and \ccc{Bbox_3}. Relevant herein means that a line primitive (ray, segment, line) is tested against a planar or solid primitive (plane, triangle, box). The operator computes a \ccc{CGAL::Object} which is the intersection between the objects \ccc{type_1} and \ccc{type_2}.}

\ccNestedType{Compare_distance_3} 
{A functor object to compare distances between points and primitives.
Provides the operators:
\ccc{bool operator()(Point_3 p, Type type, Point_3 q);}
where \ccc{Type} is any of the types among \ccc{Segment_3}, \ccc{Triangle_3} and \ccc{Bbox_3}. The operator returns \ccc{true} iff \ccc{type} is closer to \ccc{p} than \ccc{q} is.}

\ccNestedType{Closest_point_3} 
{A functor object to compute closest points on primitives.
Provides the operators:
\ccc{Point_3 operator()(Point_3 p, Type type, Point_3 q);}
where \ccc{Type} is any of the types among \ccc{Segment_3} and \ccc{Triangle_3}. If \ccc{type} is closer to \ccc{p} than \ccc{q} is, the operator returns the point on \ccc{type} which is closest to \ccc{p}. Otherwise, the operator returns \ccc{q}.}

\ccCreation
\ccCreationVariable{geomtraits}  %% choose variable name

\ccOperations

\ccMethod{Do_intersect_3 do_intersect_3_object();}
{Returns the intersection detection functor.}

\ccMethod{Intersect_3 intersect_3_object();}
{Returns the intersection constructor.}

\ccMethod{Compare_distance_3 compare_distance_3_object();}
{Returns the distance comparison functor.}

\ccMethod{Closest_point_3 closest_point_3_object();}
{Returns the closest point constructor.}

\ccHasModels
Any instantiation of \ccc{CGAL::Kernel} is a model of this traits concept.

\ccSeeAlso

\ccc{AABB_traits<GeomTraits,AABBPrimitive>}.

\end{ccRefConcept}

% +------------------------------------------------------------------------+
%%RefPage: end of main body, begin of footer
\ccRefPageEnd
% EOF
% +------------------------------------------------------------------------+

