This commit is contained in:
Andreas Fabri 2012-10-15 13:46:34 +00:00
parent 92e32a4f8a
commit fa5b32b8de
5 changed files with 37 additions and 41 deletions

View File

@ -40,7 +40,7 @@ that the \f$ \alpha\f$-shape degenerates to the point-set \f$ S\f$ for
will prevent us even from moving the spoon between two points since
it's way too large. So we will never spoon up ice-cream lying in the
inside of the convex hull of \f$ S\f$, and hence the \f$ \alpha\f$-shape for
\f$ \alpha \rightarrow \infty\f$ is the convex hull of \f$ S\f$.\footnote{ice cream, ice cream!!! The wording of this introductory paragraphs is borrowed from Kaspar Fischer's " Introduction to Alpha Shapes" which can be found at http://people.inf.ethz.ch/fischerk/pubs/as.pdf. The picture has been taken from Walter Luh's homepage at http://www.stanford.edu/&wtilde;luh/cs448b/alphashapes.html.}
\f$ \alpha \rightarrow \infty\f$ is the convex hull of \f$ S\f$.
# Definitions # {#Alpha_shapes_2Definitions}
@ -77,7 +77,7 @@ finite number of different \f$ \alpha\f$-shapes and corresponding
\section I1_SectAlpha_Shape_2 Functionality
The class `CGAL::Alpha_shape_2<Dt>` represents the family of
The class `Alpha_shape_2<Dt>` represents the family of
\f$ \alpha\f$-shapes of points in a plane for <I>all</I> positive
\f$ \alpha\f$. It maintains the underlying triangulation `Dt` which
represents connectivity and order among squared radius of its faces. Each
@ -86,7 +86,7 @@ that specifies for which values of \f$ \alpha\f$ the face belongs to the
\f$ \alpha\f$-shape. There are links between the intervals and the
\f$ k\f$-dimensional faces of the triangulation.
The class `CGAL::Alpha_shape_2<Dt>` provides functions to set and
The class `Alpha_shape_2<Dt>` provides functions to set and
get the current \f$ \alpha\f$-value, as well as an iterator that enumerates
the \f$ \alpha\f$-values where the \f$ \alpha\f$-shape changes.
@ -114,23 +114,23 @@ points cannot be inserted or removed.
We currently do not specify concepts for the underlying triangulation
type. Models that work for a basic alpha-shape are the classes
`CGAL::Delaunay_triangulation_2` and
`CGAL::Triangulation_hierarchy_2` templated with a Delaunay
`Delaunay_triangulation_2` and
`Triangulation_hierarchy_2` templated with a Delaunay
triangulation. A model that works for a weighted alpha-shape is
the class `CGAL::Regular_triangulation_2`.
the class `Regular_triangulation_2`.
The triangulation needs a geometric traits class as argument.
The requirements of this class are described in the
concept `CGAL::AlphaShapeTraits_2` for which
concept `AlphaShapeTraits_2` for which
the \cgal kernels
and `CGAL::Weighted_alpha_shape_euclidean_traits_2` are models.
and `Weighted_alpha_shape_euclidean_traits_2` are models.
There are no requirements on the triangulation data structure.
However it must be parameterized with
vertex and face classes, which are model of the concepts
`AlphaShapeVertex_2` and `AlphaShapeFace_2`,
by default the classes `CGAL::Alpha_shape_vertex_base_2<Gt>`
and `CGAL::Alpha_shape_face_base_2<Gt>`.
by default the classes `Alpha_shape_vertex_base_2<Gt>`
and `Alpha_shape_face_base_2<Gt>`.
# Examples # {#Alpha_shapes_2Examples}
@ -144,9 +144,9 @@ For the geometric traits class we can use a \cgal kernel.
For the triangulation data structure traits, we have to
choose the vertex and face classes needed for alpha shapes,
namely `CGAL::Alpha_shape_vertex_base_2<Gt, Dv>` and `CGAL::Alpha_shape_face_base_2<Gt,Df>`.
As default vertex and face type they use `CGAL::Triangulation_vertex_base_2<Gt>`
and `CGAL::Triangulation_face_base_2<Gt>` respectively.
namely `Alpha_shape_vertex_base_2<Gt, Dv>` and `Alpha_shape_face_base_2<Gt,Df>`.
As default vertex and face type they use `Triangulation_vertex_base_2<Gt>`
and `Triangulation_face_base_2<Gt>` respectively.
The following code snippet shows how to obtain a basic
alpha shape type.
@ -190,7 +190,7 @@ typedef CGAL::Alpha_shape_2<Ht> Alpha_shape_2;
A weighted alpha shape, needs a regular triangulation as
underlying triangulation `Dt`, and it needs a particular
face class, namely `CGAL::Regular_triangulation_face_base_2<Gt>`.
face class, namely `Regular_triangulation_face_base_2<Gt>`.
Note that there is no special weighted alpha shape class.
\code{.cpp}

View File

@ -19,13 +19,13 @@ for <I>weighted</I> Alpha Shapes.
### Parameters ###
The template parameter `Dt` has to be either `Delaunay_triangulation_2` or `Regular_triangulation_2`.
Note that `DT::Geom_traits`, `DT::Vertex` and `DT::Face` must model the concepts `AlphaShapeTraits_2`,
`AlphaShapeVertex_2` and `AlphaShapeFace_2` respectively.
Note that `Dt::Geom_traits`, `Dt::Vertex` and `Dt::Face` must be model the concepts `AlphaShapeTraits_2`,
`AlphaShapeVertex_2` and `AlphaShapeFace_2`, respectively.
The template parameter `ExactAlphaComparisonTag` is a tag that, when set to
`CGAL::Tag_true`, triggers exact comparisons between alpha values. This is useful
\link Tag_true `Tag_true`\endlink, triggers exact comparisons between alpha values. This is useful
when the underlying triangulation is instantiated with an exact predicates inexact constructions
kernel. By default the `ExactAlphaComparisonTag` is set to `CGAL::Tag_false` as it induces a small
kernel. By default the `ExactAlphaComparisonTag` is set to \link Tag_false `Tag_false`\endlink as it induces a small
overhead. Note that since such a strategy does not make sense if used together with a traits class with exact constructions,
the tag `ExactAlphaComparisonTag` is not taken into account if `Dt::Geom_traits::FT` is not a floating point number type.
@ -35,7 +35,7 @@ Inherits from `Dt`.
This class is the underlying triangulation class.
The modifying functions `insert` and `remove` will overwrite
The modifying functions `Alpha_shape_2::insert()` and `Alpha_shape_2::remove()` will overwrite
the inherited functions. At the moment, only the static version is implemented.
### I/O ###
@ -53,12 +53,12 @@ The cross links between the intervals and the \f$ k\f$-dimensional faces of the
triangulation are realized using methods in the \f$ k\f$-dimensional faces
themselves.
`A.alpha_find` uses linear search, while
`A.alpha_lower_bound` and `A.alpha_upper_bound`
`Alpha_shape_2::alpha_find()` uses linear search, while
`Alpha_shape_2::alpha_lower_bound()` and `Alpha_shape_2::alpha_upper_bound()`
use binary search.
`A.number_of_solid_components` performs a graph traversal and takes time
`Alpha_shape_2::number_of_solid_components` performs a graph traversal and takes time
linear in the number of faces of the underlying triangulation.
`A.find_optimal_alpha` uses binary search and takes time
`Alpha_shape_2::find_optimal_alpha` uses binary search and takes time
\f$ O(n \log n)\f$, where \f$ n\f$ is the number of points.
*/

View File

@ -6,17 +6,15 @@ namespace CGAL {
The class `Alpha_shape_face_base_2` is the default model for the concept `AlphaShapeFace_2`.
### Parameters ###
\tparam Traits has to be a model of `AlphaShapeTraits_2`.
The template parameter `Traits` has to be a model of `AlphaShapeTraits_2`.
The template parameter `Fb` has to be a model of `TriangulationFaceBase_2` (or `RegularTriangulationFaceBase_2`)
\tparam Fb has to be a model of `TriangulationFaceBase_2` (or `RegularTriangulationFaceBase_2`)
if `Alpha_shape_face_base_2` is intended to be used with an alpha-shape class based on a
`Delaunay_triangulation_2` (or a `Regular_triangulation_2`).
The template parameter `ExactAlphaComparisonTag` is a tag that, when set to
`CGAL::Tag_true`, triggers exact comparisons between alpha values. See the description
provided in the documentation of `Alpha_shape_2` for more details. The default value is `CGAL::Tag_false`.
\tparam ExactAlphaComparisonTag is a tag that, when set to
\link Tag_true `Tag_true`\endlink, triggers exact comparisons between alpha values. See the description
provided in the documentation of `Alpha_shape_2` for more details. The default value is \link Tag_false `Tag_false`\endlink.
\models ::AlphaShapeFace_2
*/

View File

@ -7,17 +7,15 @@ namespace CGAL {
The class `Alpha_shape_vertex_base_2` is the default model for the concept
`AlphaShapeVertex_2`.
### Parameters ###
\tparam Traits has to be a model of `AlphaShapeTraits_2`.
The template parameter `Traits` has to be a model of `AlphaShapeTraits_2`.
The template parameter `Vb` has to be a model of `TriangulationVertexBase_2` (or `RegularTriangulationVertexBase_2`)
\tparam Vb has to be a model of `TriangulationVertexBase_2` (or `RegularTriangulationVertexBase_2`)
if `Alpha_shape_vertex_base_2` is intended to be used with an alpha-shape class based on a
`Delaunay_triangulation_2` (or a `Regular_triangulation_2`).
The template parameter `ExactAlphaComparisonTag` is a tag that, when set to
`CGAL::Tag_true`, triggers exact comparisons between alpha values. See the description
provided in the documentation of `Alpha_shape_2` for more details. The default value is `CGAL::Tag_false`.
\tparam ExactAlphaComparisonTag is a tag that, when set to
\link Tag_true `Tag_true`\endlink, triggers exact comparisons between alpha values. See the description
provided in the documentation of `Alpha_shape_2` for more details. The default value is \link Tag_false `Tag_false`\endlink.
\models ::AlphaShapeVertex_2
*/

View File

@ -4,7 +4,7 @@
/*!
\addtogroup PkgAlphaShape2
\todo check generated documentation
\PkgDescriptionBegin{2D Alpha Shapes,PkgAlphaShape2Summary}
\PkgPicture{alpha-detail.png}
\PkgAuthors{Tran Kai Frank Da}
@ -32,9 +32,9 @@ replacing the natural distance by the power to weighted points. The metric used
determines an underlying triangulation of the alpha shape and thus, the version
computed.
The <I>basic alpha shape</I> (cf. \ref I1_SectClassicAS2D) is associated with the Delaunay triangulation
(cf. \ref Section_2D_Triangulations_Delaunay ).
(cf. Section \ref Section_2D_Triangulations_Delaunay "Delaunay Triangulations").
The <I>weighted alpha shape</I> (cf. \ref I1_SectWeightedAS2D ) is associated with the regular triangulation
(cf. \ref Section_2D_Triangulations_Regular ).
(cf. Section \ref Section_2D_Triangulations_Regular "Regular Triangulations").
There is a close connection between alpha shapes and the underlying
triangulations. More precisely, the \f$ \alpha\f$-complex of \f$ S\f$ is a