mirror of https://github.com/CGAL/cgal
AABB tree: one attempt to obtain better spacing in html doc.
This commit is contained in:
parent
0e25638992
commit
6bd3cd7c0d
|
|
@ -3,6 +3,8 @@
|
||||||
|
|
||||||
The main entry point to the component is the class \ccc{AABB_tree} which represents a static AABB tree constructed from an iterator range of geometric data. Once instantiated an AABB tree can be queried for intersection and distance queries.\\
|
The main entry point to the component is the class \ccc{AABB_tree} which represents a static AABB tree constructed from an iterator range of geometric data. Once instantiated an AABB tree can be queried for intersection and distance queries.\\
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\paragraph{Intersections.} Assume for example that the tree contains triangle primitives. The tree can be queried for intersection against line objects (rays, segments or line) in various ways. We distinguish intersection \emph{tests} which do not construct any intersection objects, from \emph{intersections} which construct the intersection objects.\\
|
\paragraph{Intersections.} Assume for example that the tree contains triangle primitives. The tree can be queried for intersection against line objects (rays, segments or line) in various ways. We distinguish intersection \emph{tests} which do not construct any intersection objects, from \emph{intersections} which construct the intersection objects.\\
|
||||||
|
|
||||||
Tests:
|
Tests:
|
||||||
|
|
@ -13,14 +15,16 @@ Tests:
|
||||||
\item Function \ccc{any_intersected_primitive} returns the first encountered intersecting primitive id (if any) without constructing the corresponding intersection object, and stops after the first encountered intersection. Note that the traversal order of the tree is such that first herein does not refer to any particular ordering of the intersections with respect to the query.
|
\item Function \ccc{any_intersected_primitive} returns the first encountered intersecting primitive id (if any) without constructing the corresponding intersection object, and stops after the first encountered intersection. Note that the traversal order of the tree is such that first herein does not refer to any particular ordering of the intersections with respect to the query.
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Constructions:
|
Constructions:
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item Function \ccc{all_intersections} detects and constructs all intersection objects with the input primitives.
|
\item Function \ccc{all_intersections} detects and constructs all intersection objects with the input primitives.
|
||||||
\item Function \ccc{any_intersection} detects and constructs the first encountered intersection and constructs the corresponding object. This function is fast as it stops after the first encountered intersection.
|
\item Function \ccc{any_intersection} detects and constructs the first encountered intersection and constructs the corresponding object. This function is fast as it stops after the first encountered intersection.
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\paragraph{Distance.} An AABB tree computes the closest point from a given point query to the input primitives through the function \ccc{closest_point(query)}. In addition, it can compute the id of the closest primitive from a given point query through the function \ccc{closest_point_and_primitive(query)}, i.e., the id of the primitive which realizes the minimum distance from the point query.\\
|
|
||||||
|
|
||||||
The AABB tree uses a secondary search structure to speed up the distance queries. The construction of this secondary structure should be requested by the user by a call to \ccc{accelerate_distance_queries} before the first the distance computation. This data structure is not generated by default because it is used only for distance computations.
|
\paragraph{Distance.} An AABB tree computes the closest point from a given point query to the input primitives through the function \ccc{closest_point(query)}. In addition, it can compute the id of the closest primitive from a given point query through the function \ccc{closest_point_and_primitive(query)}, i.e., the id of the primitive which realizes the minimum distance from the point query. The AABB tree uses a secondary search structure to speed up the distance queries. The construction of this secondary structure should be requested by the user by a call to \ccc{accelerate_distance_queries} before the first the distance computation. This data structure is not generated by default because it is used only for distance computations.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -61,16 +61,16 @@ Class \ccRefName\ is a static data structure for efficient intersection and dist
|
||||||
void rebuild(InputIterator begin,
|
void rebuild(InputIterator begin,
|
||||||
InputIterator beyond);}
|
InputIterator beyond);}
|
||||||
{Clears the current tree and rebuilds it from scratch. See constructor above for the parameters. }
|
{Clears the current tree and rebuilds it from scratch. See constructor above for the parameters. }
|
||||||
|
\ccGlue
|
||||||
\ccMethod{void clear();}
|
\ccMethod{void clear();}
|
||||||
{Clears the AABB tree. }
|
{Clears the AABB tree. }
|
||||||
|
\ccGlue
|
||||||
\ccMethod{Bounding_box bbox();}
|
\ccMethod{Bounding_box bbox();}
|
||||||
{Returns the axis-aligned bounding box of the whole tree. }
|
{Returns the axis-aligned bounding box of the whole tree. }
|
||||||
|
\ccGlue
|
||||||
\ccMethod{size_type size();}
|
\ccMethod{size_type size();}
|
||||||
{Returns the number of primitives in the tree. }
|
{Returns the number of primitives in the tree. }
|
||||||
|
\ccGlue
|
||||||
\ccMethod{bool empty();}
|
\ccMethod{bool empty();}
|
||||||
{Returns \ccc{true}, iff tree contains no primitive. }
|
{Returns \ccc{true}, iff tree contains no primitive. }
|
||||||
|
|
||||||
|
|
@ -80,17 +80,17 @@ Class \ccRefName\ is a static data structure for efficient intersection and dist
|
||||||
\ccMethod{template <class Query>
|
\ccMethod{template <class Query>
|
||||||
bool do_intersect(const Query& query);}
|
bool do_intersect(const Query& query);}
|
||||||
{Returns \ccc{true}, iff the query intersects at least one of the input primitives. Type \ccc{Query} must be a type for which \ccc{do_intersect} predicates are defined in the \ccc{AT} class.}
|
{Returns \ccc{true}, iff the query intersects at least one of the input primitives. Type \ccc{Query} must be a type for which \ccc{do_intersect} predicates are defined in the \ccc{AT} class.}
|
||||||
|
\ccGlue
|
||||||
\ccMethod{template <class Query>
|
\ccMethod{template <class Query>
|
||||||
size_type number_of_intersected_primitives(const Query& query);}
|
size_type number_of_intersected_primitives(const Query& query);}
|
||||||
{Returns the number of primitives intersected by the query. Type \ccc{Query} must be a type for which \ccc{do_intersect} predicates are defined in the \ccc{AT} class.}
|
{Returns the number of primitives intersected by the query. Type \ccc{Query} must be a type for which \ccc{do_intersect} predicates are defined in the \ccc{AT} class.}
|
||||||
|
\ccGlue
|
||||||
\ccMethod{template <class Query, class OutputIterator>
|
\ccMethod{template <class Query, class OutputIterator>
|
||||||
OutputIterator
|
OutputIterator
|
||||||
all_intersected_primitives(const Query& query,
|
all_intersected_primitives(const Query& query,
|
||||||
OutputIterator out);}
|
OutputIterator out);}
|
||||||
{Outputs to the iterator the list of all intersected primitives ids. This function does not compute the intersection points and is hence faster than the function \ccc{all_intersections} function below. Type \ccc{Query} must be a type for which \ccc{do_intersect} predicates are defined in the \ccc{AT} class.}
|
{Outputs to the iterator the list of all intersected primitives ids. This function does not compute the intersection points and is hence faster than the function \ccc{all_intersections} function below. Type \ccc{Query} must be a type for which \ccc{do_intersect} predicates are defined in the \ccc{AT} class.}
|
||||||
|
\ccGlue
|
||||||
\ccMethod{template <class Query>
|
\ccMethod{template <class Query>
|
||||||
boost::optional<Primitive::Id>
|
boost::optional<Primitive::Id>
|
||||||
any_intersected_primitive(const Query& query);}
|
any_intersected_primitive(const Query& query);}
|
||||||
|
|
@ -105,7 +105,7 @@ Class \ccRefName\ is a static data structure for efficient intersection and dist
|
||||||
all_intersections(const Query& query,
|
all_intersections(const Query& query,
|
||||||
OutputIterator out);}
|
OutputIterator out);}
|
||||||
{Outputs to the iterator the list of all intersections between the query and input data, as objects of type \ccc{Object_and_primitive_id}. Type \ccc{Query} must be a type for which \ccc{do_intersect} predicates and intersections are defined in the \ccc{AT} class.}
|
{Outputs to the iterator the list of all intersections between the query and input data, as objects of type \ccc{Object_and_primitive_id}. Type \ccc{Query} must be a type for which \ccc{do_intersect} predicates and intersections are defined in the \ccc{AT} class.}
|
||||||
|
\ccGlue
|
||||||
\ccMethod{template <class Query>
|
\ccMethod{template <class Query>
|
||||||
boost::optional<Object_and_primitive_id>
|
boost::optional<Object_and_primitive_id>
|
||||||
any_intersection(const Query& query);}
|
any_intersection(const Query& query);}
|
||||||
|
|
@ -119,11 +119,11 @@ Class \ccRefName\ is a static data structure for efficient intersection and dist
|
||||||
\ccMethod{FT
|
\ccMethod{FT
|
||||||
squared_distance(const Point& query);}
|
squared_distance(const Point& query);}
|
||||||
{Returns the minimum squared distance between the query point and all input primitives. Method \ccc{accelerate_distance_queries} should be called before the first distance query, so that an internal secondary search structure is build, for improving performance.}
|
{Returns the minimum squared distance between the query point and all input primitives. Method \ccc{accelerate_distance_queries} should be called before the first distance query, so that an internal secondary search structure is build, for improving performance.}
|
||||||
|
\ccGlue
|
||||||
\ccMethod{Point
|
\ccMethod{Point
|
||||||
closest_point(const Point& query);}
|
closest_point(const Point& query);}
|
||||||
{Returns the point in the union of all input primitives which is closest to the query. In case there are several closest points, one arbitrarily chosen closest point is returned. Method \ccc{accelerate_distance_queries} should be called before the first distance query, so that an internal secondary search structure is build, for improving performance.}
|
{Returns the point in the union of all input primitives which is closest to the query. In case there are several closest points, one arbitrarily chosen closest point is returned. Method \ccc{accelerate_distance_queries} should be called before the first distance query, so that an internal secondary search structure is build, for improving performance.}
|
||||||
|
\ccGlue
|
||||||
\ccMethod{Point_and_primitive_id
|
\ccMethod{Point_and_primitive_id
|
||||||
closest_point_and_primitive(const Point& query);}
|
closest_point_and_primitive(const Point& query);}
|
||||||
{Returns a \ccc{Point_and_primitive_id} which realizes the smallest distance between the query point and all input primitives. Method \ccc{accelerate_distance_queries} should be called before the first distance query, so that an internal secondary search structure is build, for improving performance.}
|
{Returns a \ccc{Point_and_primitive_id} which realizes the smallest distance between the query point and all input primitives. Method \ccc{accelerate_distance_queries} should be called before the first distance query, so that an internal secondary search structure is build, for improving performance.}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue