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}
@ -31,10 +31,10 @@ triangulation and the other on its generalization, the regular triangulation,
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 ).
The <I>basic alpha shape</I> (cf. \ref I1_SectClassicAS2D) is associated with the Delaunay triangulation
(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