Update also LCC doc accordingly.

This commit is contained in:
Guillaume Damiand 2016-08-10 15:11:09 -04:00
parent 091ae2ab8e
commit 7e3cb2094e
10 changed files with 106 additions and 149 deletions

View File

@ -4,23 +4,18 @@ namespace CGAL {
/*!
\ingroup PkgLinearCellComplexClasses
The class `Cell_attribute_with_point` represents an attribute containing a point and
containing an information when `Info_` is different from `void`.
This class can typically be used to associate a point to each 0-cell
of a combinatorial map.
The class `Cell_attribute_with_point` represents an attribute containing a point and containing an information when `Info_` is different from `void`. This class can typically be used to associate a point to each 0-cell of a \tred{combinatorial or a generalized map}.
\cgalModels `CellAttributeWithPoint`
\tparam LCC must be an instantiation of `Linear_cell_complex` class,
\tparam Info_ is the type of the information contained in the attribute, `void` for no information,
\tparam Tag is `::Tag_true` to enable the storage of a \ref Cell_attribute_with_point::Dart_handle "Dart_handle" of the associated cell, `::Tag_false` otherwise,
\tparam Tag is `::Tag_true` to enable the storage of a \link Cell_attribute_with_point::Dart_handle `Dart_handle`\endlink of the associated cell, `::Tag_false` otherwise,
\tparam OnMerge is a functor called when two attributes are merged,
\tparam OnSplit is a functor called when one attribute is split in two.
By default, `OnMerge` and `OnSplit` are equal to
`Null_functor`; `Tag` is equal to
`::Tag_true`; and `Info_` is equal to `void`.
By default, `OnMerge` and `OnSplit` are equal to `Null_functor`; `Tag` is equal to `::Tag_true`; and `Info_` is equal to `void`.
\sa `CGAL::Linear_cell_complex<d,d2,LCCTraits,Items,Alloc>`
\sa `CGAL::Linear_cell_complex_min_items<d>`

View File

@ -4,33 +4,20 @@ namespace CGAL {
/*!
\ingroup PkgLinearCellComplexClasses
The class `Linear_cell_complex` represents a linear cell complex in dimension `d`,
in an ambient space of dimension `d2`. This is a model of the concept of
`CombinatorialMap` adding a requirement to ensure that
each vertex of the map is associated with a
model of `CellAttributeWithPoint`.
The class `Linear_cell_complex` represents a linear cell complex in dimension `d`, in an ambient space of dimension `d2`. This is a model of the concept of `CombinatorialMap` adding a requirement to ensure that each vertex of the map is associated with a model of `CellAttributeWithPoint`.
\cgalModels `CombinatorialMap`
\tparam d an integer for the dimension of the combinatorial map,
\tparam d2 an integer for the dimension of the ambient space,
\tparam LCCTraits must be a model of the `LinearCellComplexTraits` concept,
satisfying \ref LinearCellComplexTraits::ambient_dimension "LCCTraits::ambient_dimension"`==d2`,
\tparam LCCTraits must be a model of the `LinearCellComplexTraits` concept, satisfying \link LinearCellComplexTraits::ambient_dimension `LCCTraits::ambient_dimension`\endlink`==d2`,
\tparam Items must be a model of the `LinearCellComplexItems` concept,
\tparam Alloc has to match the standard allocator requirements.
There are four default template arguments:
`d2` is equal to `d`,
`LCCTraits` is equal to `CGAL::Linear_cell_complex_traits<d2>`,
`Items` is equal to `CGAL::Linear_cell_complex_min_items<d>` and
`Alloc` is `CGAL_ALLOCATOR(int)`.
There are four default template arguments: `d2` is equal to `d`, `LCCTraits` is equal to `CGAL::Linear_cell_complex_traits<d2>`, `Items` is equal to `CGAL::Linear_cell_complex_min_items<d>` and `Alloc` is `CGAL_ALLOCATOR(int)`.
\cgalAdvancedBegin
Note that there is an additional, and undocumented, template
parameter `CMap` for
`Linear_cell_complex<d,d2,LCCTraits,Items,Alloc,CMap>` allowing to
inherit from any model of the `CombinatorialMap` concept.
\cgalAdvancedEnd
Note that there is an additional, and undocumented, template parameter `CMap` for `Linear_cell_complex<d,d2,LCCTraits,Items,Alloc,CMap>` allowing to inherit from any model of the `CombinatorialMap` or `GeneralizedMap` concept. \cgalAdvancedEnd
\sa `CombinatorialMap`
\sa `CGAL::Combinatorial_map<d,Items,Alloc>`
@ -75,7 +62,7 @@ static unsigned int ambient_dimension = d2;
typedef Linear_cell_complex<d,d2,LCCTraits,Items,Alloc> Self;
/*!
The type of dart, must satisfy \ref Dart::dimension "Dart::dimension"`==d`.
The type of dart, must satisfy \link Dart::dimension `Dart::dimension`\endlink`==d`.
*/
typedef Items::Dart_wrapper<Self>::Dart Dart;
@ -130,14 +117,14 @@ typedef unspecified_type Vertex_attribute_const_handle;
/*!
%Range of all the 0-attributes, a model of the `Range` concept
(a shortcut for \link CombinatorialMap::Attribute_range `Attribute_range<0>::type` \endlink).
%Iterator inner type is bidirectional iterator and value type is \ref Linear_cell_complex::Vertex_attribute "Vertex_attribute".
%Iterator inner type is bidirectional iterator and value type is \link Linear_cell_complex::Vertex_attribute `Vertex_attribute`\endlink.
*/
typedef unspecified_type Vertex_attribute_range;
/*!
%Const range of all the 0-attributes, a model of the `ConstRange` concept
a shortcut for \link CombinatorialMap::Attribute_const_range `Attribute_const_range<0>::type` \endlink).
%Iterator inner type is bidirectional iterator and value type is \ref Linear_cell_complex::Vertex_attribute "Vertex_attribute".
%Iterator inner type is bidirectional iterator and value type is \link Linear_cell_complex::Vertex_attribute `Vertex_attribute`\endlink.
*/
typedef unspecified_type Vertex_attribute_const_range;
@ -148,13 +135,13 @@ typedef unspecified_type Vertex_attribute_const_range;
/*!
Returns a range of all the 0-attributes in this linear cell complex
(a shortcut for \ref CombinatorialMap::attributes "attributes<0>()").
(a shortcut for \link CombinatorialMap::attributes `attributes<0>()`\endlink).
*/
Vertex_attribute_range& vertex_attributes();
/*!
Returns a const range of all the 0-attributes in this linear cell complex
(a shortcut for \ref CombinatorialMap::attributes "attributes<0>() const").
(a shortcut for \link CombinatorialMap::attributes `attributes<0>() const`\endlink).
*/
Vertex_attribute_const_range& vertex_attributes() const;
@ -168,13 +155,13 @@ Returns true iff this linear cell complex is valid.
A linear cell complex `lcc` is valid if it is a valid combinatorial
map (cf. `CombinatorialMap::is_valid()`), and if for each dart handle <I>dh</I> such that
`*dh`\f$\in\f$\ref CombinatorialMap::darts "darts()": \ref Dart::attribute "dh->attribute<0>()"`!=NULL`.
`*dh`\f$\in\f$\link CombinatorialMap::darts `darts()`\endlink: \link Dart::attribute `dh->attribute<0>()`\endlink`!=NULL`.
*/
bool is_valid() const;
/*!
Returns the number of 0-attributes in this linear cell complex
(a shortcut for \ref CombinatorialMap::number_of_attributes "number_of_attributes<0>()").
(a shortcut for \link CombinatorialMap::number_of_attributes `number_of_attributes<0>()`\endlink).
*/
size_type number_of_vertex_attributes() const;
@ -231,9 +218,9 @@ Dart_handle create_dart(const Point& apoint);
/*!
Creates a new 0-attribute in this linear cell complex,
and returns the corresponding handle (a shortcut for
\ref CombinatorialMap::create_attribute "create_attribute<0>(t1)").
\link CombinatorialMap::create_attribute `create_attribute<0>(t1)`\endlink).
Calls the constructor of
\ref Linear_cell_complex::Vertex_attribute "Vertex_attribute" having `T1` as parameter. Overloads of this
\link Linear_cell_complex::Vertex_attribute `Vertex_attribute`\endlink having `T1` as parameter. Overloads of this
member function are defined that take from zero to nine arguments.
With zero argument, `create_vertex_attribute()` creates a new
0-attribute by using the default constructor.
@ -243,7 +230,7 @@ create_vertex_attribute(T1 t1);
/*!
Removes the 0-attribute pointed to by `vh` from this linear cell complex
(a shortcut for \ref CombinatorialMap::erase_attribute "erase_attribute<0>(vh)").
(a shortcut for \link CombinatorialMap::erase_attribute `erase_attribute<0>(vh)`\endlink).
\pre `*vh`\f$ \in\f$`vertex_attributes()`.
*/
@ -252,8 +239,8 @@ void erase_vertex_attribute(Vertex_attribute_handle vh);
/*!
Associates the 0-attribute of all the darts of the 0-cell
containing `dh` to `vh`
(a shortcut for \ref CombinatorialMap::set_attribute "set_attribute<0>(dh,vh)").
\pre `*dh`\f$ \in\f$\ref CombinatorialMap::darts "darts()" and `*vh`\f$ \in\f$`vertex_attributes()`.
(a shortcut for \link CombinatorialMap::set_attribute `set_attribute<0>(dh,vh)`\endlink).
\pre `*dh`\f$ \in\f$\link CombinatorialMap::darts `darts()`\endlink and `*vh`\f$ \in\f$`vertex_attributes()`.
*/
void set_vertex_attribute(Dart_handle dh, Vertex_attribute_handle vh);
@ -277,7 +264,7 @@ void correct_invalid_attributes();
/*!
Returns the barycenter of the <I>i</I>-cell containing `dh`.
\pre 1\f$ \leq\f$<I>i</I>\f$ \leq\f$\ref CombinatorialMap::dimension "dimension" and `*dh`\f$ \in\f$\ref CombinatorialMap::darts "darts()".
\pre 1\f$ \leq\f$<I>i</I>\f$ \leq\f$\link CombinatorialMap::dimension `dimension`\endlink and `*dh`\f$ \in\f$\link CombinatorialMap::darts `darts()`\endlink.
*/
template<unsigned int i> Point barycenter(Dart_const_handle dh) const;
@ -285,11 +272,11 @@ template<unsigned int i> Point barycenter(Dart_const_handle dh) const;
/*!
Inserts a point, copy of `p`, in the <I>i</I>-cell containing `dh`.
Returns a handle on one dart of this cell.
\pre <I>i</I>\f$ \leq\f$\ref CombinatorialMap::dimension "dimension"\f$ \leq\f$ 2 and `*dh`\f$ \in\f$\ref CombinatorialMap::darts "darts()".
\pre <I>i</I>\f$ \leq\f$\link CombinatorialMap::dimension `dimension`\endlink \f$ \leq\f$ 2 and `*dh`\f$ \in\f$\link CombinatorialMap::darts `darts()`\endlink.
If \link CombinatorialMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==true`,
if <I>i</I>-attributes are non void,
\ref CellAttribute::On_split "Attribute_type<i>::type::On_split"(<I>a</I>,<I>a'</I>) is called,
\link CellAttribute::On_split `Attribute_type<i>::type::On_split`\endlink(<I>a</I>,<I>a'</I>) is called,
with <I>a</I> the original <I>i</I>-attribute associated
with <I>dh</I> and <I>a'</I> each new <I>i</I>-attribute created during the operation.
@ -304,9 +291,9 @@ template <unsigned int i> Dart_handle insert_point_in_cell(Dart_handle dh, Point
/*!
Inserts a point in the barycenter of the <I>i</I>-cell containing `dh`.
Returns a handle on one dart of this cell.
\pre <I>i</I>\f$ \leq\f$\ref CombinatorialMap::dimension "dimension"\f$ \leq\f$ 2 and `*dh`\f$ \in\f$\ref CombinatorialMap::darts "darts()".
\pre <I>i</I>\f$ \leq\f$\link CombinatorialMap::dimension `dimension`\endlink \f$ \leq\f$ 2 and `*dh`\f$ \in\f$\link CombinatorialMap::darts `darts()`\endlink.
If \link CombinatorialMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==true`, if <I>i</I>-attributes are non void, \ref CellAttribute::On_split "Attribute_type<i>::type::On_split"(<I>a</I>,<I>a'</I>) is called, with <I>a</I> the original <I>i</I>-attribute associated with <I>dh</I> and <I>a'</I> each new <I>i</I>-attribute created during the operation.
If \link CombinatorialMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==true`, if <I>i</I>-attributes are non void, \link CellAttribute::On_split `Attribute_type<i>::type::On_split`\endlink(<I>a</I>,<I>a'</I>) is called, with <I>a</I> the original <I>i</I>-attribute associated with <I>dh</I> and <I>a'</I> each new <I>i</I>-attribute created during the operation.
\cgalAdvancedBegin
If \link CombinatorialMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==false`, non void attributes are
@ -321,7 +308,7 @@ Inserts a 1-cell in the 2-cell containing `dh`, the 1-cell
being attached only by one of its vertex to the 0-cell containing `dh`.
The second vertex is associated with a new 0-attribute containing a copy of
`p` as point. Returns a handle on one dart belonging to the new 0-cell.
\pre 2\f$ \leq\f$\ref CombinatorialMap::dimension "dimension" and `*dh`\f$ \in\f$\ref CombinatorialMap::darts "darts()".
\pre 2\f$ \leq\f$\link CombinatorialMap::dimension `dimension`\endlink and `*dh`\f$ \in\f$\link CombinatorialMap::darts `darts()`\endlink.
\cgalAdvancedBegin
If \link CombinatorialMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==false`, non void attributes are not updated; thus the combinatorial map can be no more valid after this operation.
@ -338,7 +325,7 @@ Dart_handle insert_dangling_cell_1_in_cell_2(Dart_handle dh, Point p);
/*!
Creates an isolated segment in this linear cell complex (two darts linked by \f$ \beta_2\f$) having `p0`, `p1` as points.
Returns a handle on the dart associated with `p0`.
\pre \ref CombinatorialMap::dimension "dimension"\f$ \geq\f$ 2.
\pre \link CombinatorialMap::dimension `dimension`\endlink \f$ \geq\f$ 2.
\image html lcc_make_segment.png "Example of r=lcc.make_segment(p0,p1), left for combinatorial map as combinatorial data-structure, right for generalized maps."
\image latex lcc_make_segment.png "Example of r=lcc.make_segment(p0,p1), left for combinatorial map as combinatorial data-structure, right for generalized maps."
@ -348,7 +335,7 @@ Dart_handle make_segment(const Point& p0, const Point& p1);
/*!
Creates an isolated triangle in this linear cell complex having `p0`, `p1`, `p2` as points.
Returns a handle on the dart associated with `p0` and with edge [`p0`,`p1`].
\pre \ref CombinatorialMap::dimension "dimension"\f$ \geq\f$ 1.
\pre \link CombinatorialMap::dimension `dimension`\endlink \f$ \geq\f$ 1.
\image html lcc_make_triangle.png "Example of r=lcc.make_triangle(p0,p1,p2), left for combinatorial map as combinatorial data-structure, right for generalized maps."
\image latex lcc_make_triangle.png "Example of r=lcc.make_triangle(p0,p1,p2), left for combinatorial map as combinatorial data-structure, right for generalized maps."
@ -358,7 +345,7 @@ Dart_handle make_triangle(const Point& p0, const Point& p1, const Point& p2);
/*!
Creates an isolated quadrangle in this linear cell complex having `p0`, `p1`, `p2`, `p3` as points.
Returns a handle on the dart associated with `p0` and with edge [`p0`,`p1`].
\pre \ref CombinatorialMap::dimension "dimension"\f$ \geq\f$ 1.
\pre \link CombinatorialMap::dimension `dimension`\endlink \f$ \geq\f$ 1.
\image html lcc_make_quadrilateral.png "Example of r=lcc.make_quadrangle(p0,p1,p2,p3), left for combinatorial map as combinatorial data-structure, right for generalized maps."
\image latex lcc_make_quadrilateral.png "Example of r=lcc.make_quadrangle(p0,p1,p2,p3), left for combinatorial map as combinatorial data-structure, right for generalized maps."
@ -368,7 +355,7 @@ Dart_handle make_quadrangle(const Point& p0,const Point& p1,const Point& p2,cons
/*!
Creates an isolated tetrahedron in this linear cell complex having `p0`, `p1`,`p2`,`p3` as points.
Returns a handle on the dart associated with `p0`, with edge [`p0`,`p1`] and belonging to the 2-cell having `p0`, `p1`, `p2` as points.
\pre \ref CombinatorialMap::dimension "dimension"\f$ \geq\f$ 2.
\pre \link CombinatorialMap::dimension `dimension`\endlink \f$ \geq\f$ 2.
\image html lcc_make_tetrahedron.png "Example of r=lcc.make_tetrahedron(p0,p1,p2,p3), left for combinatorial map as combinatorial data-structure, right for generalized maps."
\image latex lcc_make_tetrahedron.png "Example of r=lcc.make_tetrahedron(p0,p1,p2,p3), left for combinatorial map as combinatorial data-structure, right for generalized maps."
@ -378,7 +365,7 @@ Dart_handle make_tetrahedron(const Point& p0,const Point& p1,const Point& p2,con
/*!
Creates an isolated hexahedron in this linear cell complex having `p0`, `p1`, `p2`, `p3`, `p4`, `p5`, `p6`, `p7` as points.
Returns a handle on the dart associated with `p0`, with edge [`p0`,`p5`] and belonging to the 2-cell having `p0`, `p5`, `p6`, `p1` as points.
\pre \ref CombinatorialMap::dimension "dimension" \f$ \geq \f$ 2.
\pre \link CombinatorialMap::dimension `dimension`\endlink \f$ \geq \f$ 2.
\image html lcc_make_hexahedron.png "Example of r=lcc.make_hexahedron(p0,p1,p2,p3,p4,p5,p6,p7), left for combinatorial map as combinatorial data-structure, right for generalized maps."
\image latex lcc_make_hexahedron.png "Example of r=lcc.make_hexahedron(p0,p1,p2,p3,p4,p5,p6,p7), left for combinatorial map as combinatorial data-structure, right for generalized maps."

View File

@ -6,8 +6,8 @@ namespace CGAL {
Imports an embedded plane graph read from `ais` into `lcc`.
Objects are added in `lcc`, existing darts are not modified.
Returns a dart created during the import.
\pre \ref CombinatorialMap::dimension "LCC::dimension"\f$ \geq\f$ 2
and \ref Linear_cell_complex::ambient_dimension "LCC::ambient_dimension"==2.
\pre \link CombinatorialMap::dimension `LCC::dimension`\endlink \f$ \geq\f$ 2
and \link Linear_cell_complex::ambient_dimension `LCC::ambient_dimension`\endlink==2.
\cgalHeading{File format}

View File

@ -5,7 +5,7 @@ namespace CGAL {
\ingroup PkgLinearCellComplexClasses
The class `Linear_cell_complex_min_items` defines the type of darts, which is a
\ref CombinatorialMapItems::Dart_wrapper "Dart_wrapper::Dart<d,LCC>", and the traits class used. In
\link CombinatorialMapItems::Dart_wrapper `Dart_wrapper::Dart<d,LCC>`\endlink, and the traits class used. In
this class, 0-attributes are enabled and associated with
`Cell_attribute_with_point`.

View File

@ -5,8 +5,8 @@ namespace CGAL {
Returns the normal vector of the 0-cell containing `dh`, i.e.\ the average of
all the normal vectors of the 2-cells incident to the 0-cell containing `dh`.
\pre \ref Linear_cell_complex::ambient_dimension "LCC::ambient_dimension"==3 and
`*dh`\f$ \in\f$\ref CombinatorialMap::darts "lcc.darts()"`.
\pre \link Linear_cell_complex::ambient_dimension `LCC::ambient_dimension`\endlink==3 and
`*dh`\f$ \in\f$\link CombinatorialMap::darts `lcc.darts()`\endlink`.
\sa `CGAL::compute_normal_of_cell_2<LCC>`
@ -19,8 +19,8 @@ typename LCC::Dart_const_handle dh);
\ingroup PkgLinearCellComplexOperations
Returns the normal vector of the 2-cell containing `dh`.
\pre \ref Linear_cell_complex::ambient_dimension "LCC::ambient_dimension"==3 and
`*dh`\f$ \in\f$\ref CombinatorialMap::darts "lcc.darts()"`.
\pre \link Linear_cell_complex::ambient_dimension `LCC::ambient_dimension`\endlink==3 and
`*dh`\f$ \in\f$\link CombinatorialMap::darts `lcc.darts()`\endlink`.
\sa `CGAL::compute_normal_of_cell_0<LCC>`
*/

View File

@ -8,7 +8,7 @@ concept, to represent a cell attribute containing a point.
\cgalRefines `CellAttribute`
\cgalHasModel \ref CGAL::Cell_attribute_with_point "CGAL::Cell_attribute_with_point<LCC,Info_,Tag,OnMerge,OnSplit>"
\cgalHasModel \link CGAL::Cell_attribute_with_point `CGAL::Cell_attribute_with_point<LCC,Info_,Tag,OnMerge,OnSplit>`\endlink
\sa `LinearCellComplexItems`
@ -42,15 +42,15 @@ CellAttributeWithPoint();
/*!
Constructor initializing the point of this attribute by the
copy contructor \ref Point "Point"`(apoint)`.
copy contructor \link Point `Point`\endlink`(apoint)`.
*/
CellAttributeWithPoint(const Point&apoint);
/*!
Constructor initializing the point of this attribute by the
copy contructor \ref Point "Point"`(apoint)` and initializing the
copy contructor \link Point `Point`\endlink`(apoint)` and initializing the
information of this attribute by the
copy contructor \ref Info "Info"`(info)`.
copy contructor \link Info `Info`\endlink`(info)`.
Defined only if `Info` is different from `void`.
*/
CellAttributeWithPoint(const Point&apoint, const Info& info);

View File

@ -3,17 +3,13 @@
\ingroup PkgLinearCellComplexConcepts
\cgalConcept
The concept `LinearCellComplexItems` refines the concept of
`CombinatorialMapItems` by adding the requirement that
0-attributes are enabled, and associated with attributes that are
models of the `CellAttributeWithPoint` concept.
The concept `LinearCellComplexItems` refines the concept of `CombinatorialMapItems` by adding the requirement that 0-attributes are enabled, and associated with attributes that are models of the `CellAttributeWithPoint` concept.
\cgalRefines `CombinatorialMapItems`
The first type in \ref CombinatorialMapItems::Dart_wrapper "Attributes" must be a model of the
`CellAttributeWithPoint` concept.
The first type in \link CombinatorialMapItems::Dart_wrapper `Attributes`\endlink must be a model of the `CellAttributeWithPoint` concept.
\cgalHasModel \ref CGAL::Linear_cell_complex_min_items "CGAL::Linear_cell_complex_min_items<d>"
\cgalHasModel \link CGAL::Linear_cell_complex_min_items `CGAL::Linear_cell_complex_min_items<d>`\endlink
\sa `CGAL::Linear_cell_complex<d,d2,LCCTraits,Items,Alloc>`
\sa `CellAttributeWithPoint`

View File

@ -3,11 +3,9 @@
\ingroup PkgLinearCellComplexConcepts
\cgalConcept
Required types and functors for the `LinearCellComplexTraits` concept. This
geometric traits concept is used in the \ref CGAL::Linear_cell_complex "Linear_cell_complex"
class.
Required types and functors for the `LinearCellComplexTraits` concept. This geometric traits concept is used in the \link CGAL::Linear_cell_complex `Linear_cell_complex`\endlink class.
\cgalHasModel \ref CGAL::Linear_cell_complex_traits "CGAL::Linear_cell_complex_traits<d,K>"
\cgalHasModel \link CGAL::Linear_cell_complex_traits `CGAL::Linear_cell_complex_traits<d,K>`\endlink
\sa `CGAL::Linear_cell_complex<d,d2,LCCTraits,Items,Alloc>`
@ -49,45 +47,45 @@ typedef unspecified_type Vector;
/// @{
/*!
Functor that provides \ref LinearCellComplexTraits::Point "Point " `operator() (const` \ref Point " Point"`& p, const` \ref LinearCellComplexTraits::Vector " Vector"` & v)`,
Functor that provides
\link LinearCellComplexTraits::Point `Point`\endlink `operator() (const` \link Point `Point`\endlink`& p, const` \link LinearCellComplexTraits::Vector `Vector`\endlink`& v)`,
which constructs the translation of point `p` by vector `v`, and
\ref LinearCellComplexTraits::Point "Point " `operator() (const CGAL::Origin&, const ` \ref LinearCellComplexTraits::Vector " Vector"& v)`,
which constructs the translation of a point at the origin by vector `v`
(used in \ref CGAL::Linear_cell_complex::barycenter "Linear_cell_complex::barycenter").
\link LinearCellComplexTraits::Point `Point`\endlink `operator() (const CGAL::Origin&, const` \link LinearCellComplexTraits::Vector `Vector`\endlink`& v)`,
which constructs the translation of a point at the origin by vector `v` (used in \link CGAL::Linear_cell_complex::barycenter `Linear_cell_complex::barycenter`\endlink).
*/
typedef unspecified_type Construct_translated_point;
/*!
Functor that provides \ref LinearCellComplexTraits::Vector " Vector " `operator() (const ` \ref Point "Point"`& p1, const ` \ref Point " Point"`& p2)`
Functor that provides \link LinearCellComplexTraits::Vector ` Vector `\endlink `operator() (const ` \link Point `Point`\endlink`& p1, const ` \link Point ` Point`\endlink`& p2)`
which constructs a vector as the difference of points `p2-p1`, and
\ref LinearCellComplexTraits::Vector " Vector " `operator() (const CGAL::Origin&, const ` \ref Point " Point"`& p)`
\link LinearCellComplexTraits::Vector ` Vector `\endlink `operator() (const CGAL::Origin&, const ` \link Point ` Point`\endlink`& p)`
which constructs a vector as the difference of point `p` and a point at the origin
(used in \ref CGAL::Linear_cell_complex::barycenter "Linear_cell_complex::barycenter"
(used in \link CGAL::Linear_cell_complex::barycenter `Linear_cell_complex::barycenter`\endlink
and `CGAL::import_from_plane_graph`).
*/
typedef unspecified_type Construct_vector;
/*!
Functor that provides \ref LinearCellComplexTraits::Vector " Vector " `operator() (const` \ref LinearCellComplexTraits::Vector " Vector"`& v1, const` \ref LinearCellComplexTraits::Vector " Vector"`& v2)`
Functor that provides \link LinearCellComplexTraits::Vector ` Vector `\endlink `operator() (const` \link LinearCellComplexTraits::Vector ` Vector`\endlink`& v1, const` \link LinearCellComplexTraits::Vector ` Vector`\endlink`& v2)`
which constructs a vector as the sum of vectors `v1+v2`
(used in \ref CGAL::Linear_cell_complex::barycenter "Linear_cell_complex::barycenter",
(used in \link CGAL::Linear_cell_complex::barycenter `Linear_cell_complex::barycenter`\endlink,
`CGAL::compute_normal_of_cell_0`
and `CGAL::compute_normal_of_cell_2`).
*/
typedef unspecified_type Construct_sum_of_vectors;
/*!
Functor that provides \ref LinearCellComplexTraits::Vector " Vector " `operator() (const` \ref LinearCellComplexTraits::Vector " Vector"`& v, ` \ref LinearCellComplexTraits::FT "FT" `scale)`
Functor that provides \link LinearCellComplexTraits::Vector ` Vector `\endlink `operator() (const` \link LinearCellComplexTraits::Vector ` Vector`\endlink`& v, ` \link LinearCellComplexTraits::FT `FT`\endlink `scale)`
which constructs a vector equal to vector `v` scaled by `scale` factor
(used in \ref CGAL::Linear_cell_complex::barycenter "Linear_cell_complex::barycenter",
(used in \link CGAL::Linear_cell_complex::barycenter `Linear_cell_complex::barycenter`\endlink,
`CGAL::compute_normal_of_cell_0` and `CGAL::compute_normal_of_cell_2`).
*/
typedef unspecified_type Construct_scaled_vector;
/*!
Functor that provides \ref LinearCellComplexTraits::Point "Point " `operator() (const ` \ref Point "Point"`& p1, const ` \ref Point "Point"`& p2)`
Functor that provides \link LinearCellComplexTraits::Point `Point `\endlink `operator() (const ` \link Point `Point`\endlink`& p1, const ` \link Point `Point`\endlink`& p2)`
which constructs the midpoint of points `p1` and `p2`
(used in \ref CGAL::Linear_cell_complex::barycenter "Linear_cell_complex::barycenter").
(used in \link CGAL::Linear_cell_complex::barycenter `Linear_cell_complex::barycenter`\endlink).
*/
typedef unspecified_type Construct_midpoint;
@ -98,12 +96,12 @@ typedef unspecified_type Construct_midpoint;
/// @{
/*!
a model of \ref Kernel::Direction_2 "Direction_2".
a model of \link Kernel::Direction_2 `Direction_2`\endlink.
*/
typedef unspecified_type Direction_2;
/*!
a model of \ref Kernel::ConstructDirection_2 "ConstructDirection_2" (used in `CGAL::import_from_plane_graph`).
a model of \link Kernel::ConstructDirection_2 `ConstructDirection_2`\endlink (used in `CGAL::import_from_plane_graph`).
*/
typedef unspecified_type Construct_direction_2;
@ -114,16 +112,15 @@ typedef unspecified_type Construct_direction_2;
/// @{
/*!
a model of \ref Kernel::ConstructNormal_3 "ConstructNormal_3" (used in `CGAL::compute_normal_of_cell_2`).
a model of \link Kernel::ConstructNormal_3 `ConstructNormal_3`\endlink (used in `CGAL::compute_normal_of_cell_2`).
*/
typedef unspecified_type Construct_normal_3;
/*!
a model of \ref Kernel::Collinear_3 "Collinear_3" (used in `CGAL::compute_normal_of_cell_2`).
a model of \link Kernel::Collinear_3 `Collinear_3`\endlink (used in `CGAL::compute_normal_of_cell_2`).
*/
typedef unspecified_type Collinear_3;
/// @}
}; /* end LinearCellComplexTraits */

View File

@ -1,3 +1,4 @@
@INCLUDE = ${CGAL_DOC_PACKAGE_DEFAULTS}
PROJECT_NAME = "CGAL ${CGAL_DOC_VERSION} - Linear Cell Complex"
ALIASES += tred{1}="\htmlonly <b><font color='red'>\endhtmlonly \1 \htmlonly </font></b> \endhtmlonly "

View File

@ -23,7 +23,7 @@ The combinatorial part of a linear cell complex is described by a
read the \ref ChapterCombinatorialMap "Combinatorial maps user manual"
for definitions). To add
the linear geometrical embedding, a point (a model of
\ref Kernel::Point_2 "Point_2" or \ref Kernel::Point_3 "Point_3" or \ref Kernel_d::Point_d "Point_d") is
\link Kernel::Point_2 `Point_2`\endlink or \link Kernel::Point_3 `Point_3`\endlink or \link Kernel_d::Point_d `Point_d`\endlink) is
associated to each vertex of the combinatorial map.
\cgalFigureBegin{fig_lcc_example_subdivisions,lcc_example_subdivisions.svg}
@ -69,7 +69,7 @@ dimensions of cells, and they may also be void. In the class
specific attributes are associated to all vertices of the
combinatorial map. These attributes must contain a point (a model of
(a model of
\ref Kernel::Point_2 "Point_2" or \ref Kernel::Point_3 "Point_3" or \ref Kernel_d::Point_d "Point_d"),
\link Kernel::Point_2 `Point_2`\endlink or \link Kernel::Point_3 `Point_3`\endlink or \link Kernel_d::Point_d `Point_d`\endlink),
and can be represented by instances of class
`Cell_attribute_with_point` (see
Section \ref ssecattributewp "Cell Attributes").
@ -81,7 +81,7 @@ UML diagram of the main classes of the package. Gray elements come from the \ref
\section sseclinearcellcomplex Linear Cell Complex
The \ref CGAL::Linear_cell_complex "Linear_cell_complex<d,d2,LCCTraits,Items,Alloc>" class
The \link CGAL::Linear_cell_complex `Linear_cell_complex<d,d2,LCCTraits,Items,Alloc>`\endlink class
is a model of the `CombinatorialMap` concept. It guarantees that
each vertex of the combinatorial map is associated with an attribute
containing a point. This class can be used in geometric algorithms (it
@ -118,18 +118,18 @@ class is a model of the `CellAttributeWithPoint` concept, which is
a refinement of the `CellAttribute` concept. It represents an
attribute associated with a cell, which can contain an information
(depending on whether `Info_==void` or not), but which always
contains a point, an instance of \ref Linear_cell_complex::Point "LCC::Point".
contains a point, an instance of \link Linear_cell_complex::Point `LCC::Point`\endlink.
\subsection Linear_cell_complexLinearCellComplexTraits Linear Cell Complex Traits
\anchor sseclcctraits
The `LinearCellComplexTraits` geometric traits concept defines the
required types and functors used in the `Linear_cell_complex`
class. For example it defines \ref LinearCellComplexTraits::Point "Point", the type of points used,
and \ref LinearCellComplexTraits::Vector "Vector", the corresponding vector type. It also defines all
class. For example it defines \link LinearCellComplexTraits::Point `Point`\endlink, the type of points used,
and \link LinearCellComplexTraits::Vector `Vector`\endlink, the corresponding vector type. It also defines all
the required functors used for constructions and operations, as for
example \ref LinearCellComplexTraits::Construct_translated_point "Construct_translated_point" or
\ref LinearCellComplexTraits::Construct_sum_of_vectors "Construct_sum_of_vectors".
example \link LinearCellComplexTraits::Construct_translated_point `Construct_translated_point`\endlink or
\link LinearCellComplexTraits::Construct_sum_of_vectors `Construct_sum_of_vectors`\endlink.
The class `Linear_cell_complex_traits<d,K>` is a model of
`LinearCellComplexTraits`. It defines the different types which
@ -153,28 +153,9 @@ attributes are `void`.
\section Linear_cell_complexOperations Operations
Several operations defined in the combinatorial maps package can be
used on a linear cell complex. This is the case for all the iteration
operations that do not modify the model (see example in
Section \ref ssec3Dlcc "A 3D Linear Cell Complex"). This is also the case for
all the operations that do not create new 0-cells: \ref CombinatorialMap::sew "sew",
\ref CombinatorialMap::unsew "unsew", `::remove_cell`, `::insert_cell_1_in_cell_2`,
`::insert_cell_2_in_cell_3`. Indeed, all these operations update
non `void` attributes, and thus update vertex attributes of a linear
cell complex. Note that some existing 0-attributes can be duplicated
by the \ref CombinatorialMap::unsew "unsew" method, but these 0-attributes are not new but
copies of existing old 0-attributes.
Several operations defined in the combinatorial maps package can be used on a linear cell complex. This is the case for all the iteration operations that do not modify the model (see example in Section \ref ssec3Dlcc "A 3D Linear Cell Complex"). This is also the case for all the operations that do not create new 0-cells: \link CombinatorialMap::sew `sew`\endlink, \link CombinatorialMap::unsew `unsew`\endlink, \link CombinatorialMap::remove_cell `remove_cell`\endlink, \link CombinatorialMap::insert_cell_1_in_cell_2 `insert_cell_1_in_cell_2`\endlink, \link CombinatorialMap::insert_cell_2_in_cell_3 `insert_cell_2_in_cell_3`\endlink. Indeed, all these operations update non `void` attributes, and thus update vertex attributes of a linear cell complex. Note that some existing 0-attributes can be duplicated by the \link CombinatorialMap::unsew `unsew`\endlink method, but these 0-attributes are not new but copies of existing old 0-attributes.
However, operations that create a new 0-cell can not be directly used
since the new 0-cell would not be associated with a vertex
attribute. Indeed, it is not possible for these operations to
automatically decide which point to create. These operations are:
`::insert_cell_0_in_cell_1`, `::insert_cell_0_in_cell_2`,
`::insert_dangling_cell_1_in_cell_2`, plus all the creation
operations. For these operations, new versions are proposed taking
some points as additional parameters. Lastly, some new operations are
defined, which use the geometry (see sections \ref ssecconstructionsop
"Construction Operations" and \ref ssecmodifop "Modification Operations").
However, operations that create a new 0-cell can not be directly used since the new 0-cell would not be associated with a vertex attribute. Indeed, it is not possible for these operations to automatically decide which point to create. These operations are: \link CombinatorialMap::insert_cell_0_in_cell_1 `insert_cell_0_in_cell_1`\endlink, \link CombinatorialMap::insert_cell_0_in_cell_2 `insert_cell_0_in_cell_2`\endlink, \link CombinatorialMap::insert_dangling_cell_1_in_cell_2 `insert_dangling_cell_1_in_cell_2`\endlink, plus all the creation operations. For these operations, new versions are proposed taking some points as additional parameters. Lastly, some new operations are defined, which use the geometry (see sections \ref ssecconstructionsop "Construction Operations" and \ref ssecmodifop "Modification Operations").
All the operations given in this section guarantee that given a valid
linear cell complex and a possible operation, the result is a valid
@ -186,17 +167,17 @@ restore the validity conditions.
As explained in the combinatorial map user manual,
Section \ref sseclinkdarts "Sewing Orbits and Linking Darts", it is possible to glue two <I>i</I>-cells
along an (<I>i</I>-1)-cell by using the \ref CombinatorialMap::sew "sew<i>" method. Since
along an (<I>i</I>-1)-cell by using the \link CombinatorialMap::sew `sew<i>`\endlink method. Since
this method updates non void attributes, and since points are specific
attributes, they are automatically updated during the \ref CombinatorialMap::sew "sew<i>"
attributes, they are automatically updated during the \link CombinatorialMap::sew `sew<i>`\endlink
method. Thus the sewing of two <I>i</I>-cells could deform the
geometry of the concerned objects.
For example, in \cgalFigureRef{fig_lcc_example_3d_sew}, we want to 3-sew the
two initial 3-cells. \ref CombinatorialMap::sew "sew<3>(1,5)" links by \f$ \beta_3\f$ the pairs
two initial 3-cells. \link CombinatorialMap::sew `sew<3>(1,5)`\endlink links by \f$ \beta_3\f$ the pairs
of darts (1,5), (2,8), (3,7) and (4,6). The eight vertex attributes
around the facet between the two 3-cells before the sew are merged by
pair during the sew operation (and the \ref CellAttribute::On_merge "On_merge" functor is
pair during the sew operation (and the \link CellAttribute::On_merge `On_merge`\endlink functor is
called four times). Thus, after the sew, there are only four
0-attributes around the facet. By default, the attributes associated
with the first dart of the sew operation are kept (but this can be
@ -206,22 +187,22 @@ Intuitively, the
geometry of the second 2-cell is deformed to fit to the first 2-cell.
\cgalFigureBegin{fig_lcc_example_3d_sew,lcc_example_3d_sew.svg}
Example of \ref CombinatorialMap::sew "3-sew" operation for linear cell complex. <B>Left</B>: A 3D linear cell complex containing two 3-cells that are not connected. Vertex attributes are drawn with circles containing point coordinates. Associations between darts and attributes are drawn with small lines between darts and disks. <B>Right</B>: The 3D linear cell complex obtained as result of `sew<3>(1,5)` (or `sew<3>(2,8)`, or `sew<3>(3,7)`, or `sew<3>(4,6)`). The eight 0-attributes around the facet between the two 3-cells before the sew operation, are merged into four 0-attributes after. The geometry of the pyramid is deformed since its base is fitted on the 2-cell of the cube.
Example of 3-sew operation for linear cell complex. <B>Left</B>: A 3D linear cell complex containing two 3-cells that are not connected. Vertex attributes are drawn with circles containing point coordinates. Associations between darts and attributes are drawn with small lines between darts and disks. <B>Right</B>: The 3D linear cell complex obtained as result of \link CombinatorialMap::sew `sew<3>(1,5)`\endlink (or \link CombinatorialMap::sew `sew<3>(2,8)`\endlink, or \link CombinatorialMap::sew `sew<3>(3,7)`\endlink, or \link CombinatorialMap::sew `sew<3>(4,6)`\endlink). The eight 0-attributes around the facet between the two 3-cells before the sew operation, are merged into four 0-attributes after. The geometry of the pyramid is deformed since its base is fitted on the 2-cell of the cube.
\cgalFigureEnd
This is similar for the \ref CombinatorialMap::unsew "unsew" operation, which removes \f$ \beta_i\f$ links
This is similar for link \link CombinatorialMap::unsew `unsew`\endlink operation, which removes \f$ \beta_i\f$ links
of all the darts in
\f$ \langle{}\f$\f$ \beta_1\f$,\f$ \ldots\f$,\f$ \beta_{i-2}\f$,\f$ \beta_{i+2}\f$,\f$ \ldots\f$,\f$ \beta_d\f$\f$ \rangle{}\f$(<I>d0</I>),
and updates
non void attributes which are no more associated to a same cell due to
the unlinks. If we take the linear cell complex given in
\cgalFigureRef{fig_lcc_example_3d_sew} (Right), and we call
\ref CombinatorialMap::unsew "unsew<3>(2)", we obtain the linear cell complex in
\link CombinatorialMap::unsew `unsew<3>(2)`\endlink, we obtain the linear cell complex in
\cgalFigureRef{fig_lcc_example_3d_sew} (Left) except for the coordinates of
the new four vertices, which by default are copies of original
vertices (this behavior can be modified thanks to the functor
\ref CellAttribute::On_split "On_split" in the attribute class).
The \ref CombinatorialMap::unsew "unsew<3>" operation
\link CellAttribute::On_split `On_split`\endlink in the attribute class).
The \link CombinatorialMap::unsew `unsew<3>`\endlink operation
has removed the four \f$ \beta_3\f$ links, and has duplicated the 0-attributes
since vertices are split in two after the unsew operation.
@ -240,23 +221,23 @@ that the dimension of the linear cell complex must be large enough:
darts must contain all the \f$ \beta\f$ used by the operation. All these
methods add new darts in the current linear cell complex, existing
darts are not modified. These functions
are \ref Linear_cell_complex::make_segment "make_segment",
\ref Linear_cell_complex::make_triangle "make_triangle",
\ref Linear_cell_complex::make_tetrahedron "make_tetrahedron" and
\ref Linear_cell_complex::make_hexahedron "make_hexahedron".
are \link Linear_cell_complex::make_segment `make_segment`\endlink,
\link Linear_cell_complex::make_triangle `make_triangle`\endlink,
\link Linear_cell_complex::make_tetrahedron `make_tetrahedron`\endlink and
\link Linear_cell_complex::make_hexahedron `make_hexahedron`\endlink.
There are two functions allowing to build a linear cell complex
from two other \cgal data types:
<UL>
<LI>\ref ::import_from_triangulation_3 "import_from_triangulation_3(lcc,atr)": adds in `lcc` all
the tetrahedra present in `atr`, a \ref CGAL::Triangulation_3 "Triangulation_3";
<LI>\ref ::import_from_polyhedron_3 "import_from_polyhedron_3(lcc,ap)": adds in `lcc` all
<LI>\link ::import_from_triangulation_3 `import_from_triangulation_3(lcc,atr)`\endlink: adds in `lcc` all
the tetrahedra present in `atr`, a \link CGAL::Triangulation_3 `Triangulation_3`\endlink;
<LI>\link ::import_from_polyhedron_3 `import_from_polyhedron_3(lcc,ap)`\endlink: adds in `lcc` all
the cells present in `ap`, a `Polyhedron_3`.
</UL>
Lastly, the function \ref ::import_from_plane_graph "import_from_plane_graph(lcc,ais)" adds in
Lastly, the function \link ::import_from_plane_graph `import_from_plane_graph(lcc,ais)`\endlink adds in
`lcc` all the cells reconstructed from the planar graph read in
`ais`, a `std::istream` (see the \ref ::import_from_plane_graph "reference manual" for the file
`ais`, a `std::istream` (see the \link ::import_from_plane_graph `reference manual`\endlink for the file
format).
\subsection Linear_cell_complexModificationOperations Modification Operations
@ -269,17 +250,17 @@ handles for the darts `d0`, `d1`, `d2`, respectively. That
is `d0 == *dh0`.
\cgalFigureBegin{fig_lcc_insert_vertex,lcc_insert_vertex.svg}
Example of \ref Linear_cell_complex::insert_barycenter_in_cell "insert_barycenter_in_cell<1>" and `remove_cell<0>` operations. <B>Left</B>: Initial linear cell complex. <B>Right</B>: After the insertion of a point in the barycenter of the 1-cell containing dart <I>d1</I>. Now if we remove the 0-cell containing dart <I>d2</I>, we obtain a linear cell complex isomorphic to the initial one.
Example of \link Linear_cell_complex::insert_barycenter_in_cell `insert_barycenter_in_cell<1>`\endlink and \link CombinatorialMap::remove_cell `remove_cell<0>`\endlink operations. <B>Left</B>: Initial linear cell complex. <B>Right</B>: After the insertion of a point in the barycenter of the 1-cell containing dart <I>d1</I>. Now if we remove the 0-cell containing dart <I>d2</I>, we obtain a linear cell complex isomorphic to the initial one.
\cgalFigureEnd
\ref Linear_cell_complex::insert_barycenter_in_cell "lcc.insert_barycenter_in_cell<unsigned int i>(dh0)" adds the
\link Linear_cell_complex::insert_barycenter_in_cell `lcc.insert_barycenter_in_cell<unsigned int i>(dh0)`\endlink adds the
barycenter of the <I>i</I>-cell containing dart `d0`. This
operation is possible if `d0`\f$ \in\f$\ref CombinatorialMap::darts "lcc.darts()" (see examples
operation is possible if `d0`\f$ \in\f$\link CombinatorialMap::darts `lcc.darts()`\endlink (see examples
on \cgalFigureRef{fig_lcc_insert_vertex} and
\cgalFigureRef{fig_lcc_triangulation}).
\ref Linear_cell_complex::insert_point_in_cell "lcc.insert_point_in_cell<unsigned int i>(dh0,p)" is an operation
\link Linear_cell_complex::insert_point_in_cell `lcc.insert_point_in_cell<unsigned int i>(dh0,p)`\endlink is an operation
similar to the previous operation, the only difference being that the
coordinates of the new point are here given by `p` instead of being
computed as the barycenter of the <I>i</I>-cell. Currently, these two
@ -287,20 +268,20 @@ operations are only defined for `i=1` to insert a point in an
edge, or `i=2` to insert a point in a facet.
\cgalFigureBegin{fig_lcc_triangulation,lcc_triangulation.svg}
Examples of \ref Linear_cell_complex::insert_barycenter_in_cell "insert_barycenter_in_cell<2>" operation.
Examples of \link Linear_cell_complex::insert_barycenter_in_cell `insert_barycenter_in_cell<2>`\endlink operation.
\cgalFigureEnd
\ref Linear_cell_complex::insert_dangling_cell_1_in_cell_2 "lcc.insert_dangling_cell_1_in_cell_2(dh0,p)" adds a 1-cell in
\link Linear_cell_complex::insert_dangling_cell_1_in_cell_2 `lcc.insert_dangling_cell_1_in_cell_2(dh0,p)`\endlink adds a 1-cell in
the 2-cell containing dart `d0`, the 1-cell being attached by only
one of its vertex to the 0-cell containing dart `d0`. The second
vertex of the new edge is associated with a new 0-attribute containing
a copy of `p` as point. This operation is possible if
`d0`\f$ \in\f$\ref CombinatorialMap::darts "lcc.darts()" (see example on
`d0`\f$ \in\f$\link CombinatorialMap::darts `lcc.darts()`\endlink (see example on
\cgalFigureRef{fig_lcc_insert_edge}).
\cgalFigureBegin{fig_lcc_insert_edge,lcc_insert_edge.svg}
Example of \ref Linear_cell_complex::insert_dangling_cell_1_in_cell_2 "insert_dangling_cell_1_in_cell_2", `::insert_cell_1_in_cell_2` and `::remove_cell<1>` operations. <B>Left</B>: Initial linear cell complex. <B>Right</B>: After the insertion of a dangling 1-cell in the 2-cell containing dart <I>d1</I>, and of a 1-cell in the 2-cell containing dart <I>d2</I>. Now if we remove the 1-cells containing dart <I>d4</I> and <I>d5</I>, we obtain a linear cell complex isomorphic to the initial one.
Example of \link Linear_cell_complex::insert_dangling_cell_1_in_cell_2 `insert_dangling_cell_1_in_cell_2`\endlink, `::insert_cell_1_in_cell_2` and `::remove_cell<1>` operations. <B>Left</B>: Initial linear cell complex. <B>Right</B>: After the insertion of a dangling 1-cell in the 2-cell containing dart <I>d1</I>, and of a 1-cell in the 2-cell containing dart <I>d2</I>. Now if we remove the 1-cells containing dart <I>d4</I> and <I>d5</I>, we obtain a linear cell complex isomorphic to the initial one.
\cgalFigureEnd
Some examples of use of these operations are given in
@ -317,8 +298,8 @@ If \link CombinatorialMap::set_automatic_attributes_management `set_automatic_at
This example uses a 3-dimensional linear cell complex. It creates two
tetrahedra and displays all the points of the linear cell complex
thanks to a \ref Linear_cell_complex::Vertex_attribute_const_range "Vertex_attribute_const_range". Then, the two
tetrahedra are \ref CombinatorialMap::sew "3-sewn" and we translate all the points of the second
thanks to a \link Linear_cell_complex::Vertex_attribute_const_range `Vertex_attribute_const_range`\endlink. Then, the two
tetrahedra are \link CombinatorialMap::sew `3-sewn`\endlink and we translate all the points of the second
tetrahedron along vector `v(3,1,1)`. Since the two tetrahedra
are 3-sewn, this translation moves also the 2-cell of the first
tetrahedron shared with the second one. This is illustrated by
@ -340,7 +321,7 @@ LCC characteristics: #Darts=24, #0-cells=5, #1-cells=9, #2-cells=7, #3-cells=2,
\endverbatim
The first line gives the points of the linear cell complex before the
\ref CombinatorialMap::sew "sew<3>". There are eight points, four for each tetrahedron.
\link CombinatorialMap::sew `sew<3>`\endlink. There are eight points, four for each tetrahedron.
After the sew, six vertices are merged two by two, thus there are five
vertices. We can see the points of each 3-cell (lines Volume 1 and
Volume 2) before the sew, after the sew and after the translation of
@ -394,8 +375,8 @@ Now we can use `LCC_3` in which each vertex is associated with an
attribute containing both a point and an information. In the following
example, we create two cubes, and set the color of the vertices of the
first cube to 1 and of the second cube to 19 (by iterating through two
\ref CombinatorialMap::One_dart_per_incident_cell_range "One_dart_per_incident_cell_range<0, 3>" ranges). Then we
\ref CombinatorialMap::sew "3-sew" the two cubes along one facet. This operation merges some
\link CombinatorialMap::One_dart_per_incident_cell_range `One_dart_per_incident_cell_range<0, 3>`\endlink ranges). Then we
\link CombinatorialMap::sew `3-sew`\endlink the two cubes along one facet. This operation merges some
vertices (as in the example of \cgalFigureRef{fig_lcc_example_3d_sew}). We
insert a vertex in the common 2-cell between the two cubes, and set
the information of the new 0-attribute to 5. In the last loop, we
@ -430,7 +411,7 @@ of the common 2-cell between the two cubes. The coordinates of this
vertex are initialized with the barycenter of the 2-cell
(-1,0.5,0.5), and its color is not initialized by the method, thus we
set its color manually by using the result of
\ref Linear_cell_complex::insert_barycenter_in_cell "insert_barycenter_in_cell<2>" which is a dart incident to the
\link Linear_cell_complex::insert_barycenter_in_cell `insert_barycenter_in_cell<2>`\endlink which is a dart incident to the
new vertex.
\subsection Linear_cell_complexAutomaticAttributesManagement Automatic attributes management