Remove red text in LCC doc; that was used for reviewing process.

This commit is contained in:
Guillaume Damiand 2016-10-31 14:27:09 -04:00
parent 2939b8ea8f
commit 8f07f91fa8
4 changed files with 14 additions and 18 deletions

View File

@ -4,7 +4,7 @@ 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 \tred{combinatorial or a generalized 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 combinatorial or a generalized map.
\cgalModels `CellAttributeWithPoint`

View File

@ -1,4 +1,3 @@
@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

@ -12,7 +12,7 @@ namespace CGAL {
A <I>d</I>D linear cell complex allows to represent an orientable subdivided <I>d</I>D object having linear geometry: each vertex of the subdivision is associated with a point. The geometry of each edge is a segment whose end points are associated with the two vertices of the edge, the geometry of each 2-cell is obtained from all the segments associated to the edges describing the boundary of the 2-cell and so on.
The combinatorial part of a linear cell complex is described \tred{either by a <I>d</I>D \ref CombinatorialMap "combinatorial map" or by a <I>d</I>D \ref GeneralizedMap "generalized map" (it is strongly recommended to first read the \ref ChapterCombinatorialMap "Combinatorial maps user manual" or \ref ChapterGeneralizedMap "Generalized maps user manual" for definitions)}. To add the linear geometrical embedding, a point (a model of \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 \tred{combinatorial data-structure}.
The combinatorial part of a linear cell complex is described either by a <I>d</I>D \ref CombinatorialMap "combinatorial map" or by a <I>d</I>D \ref GeneralizedMap "generalized map" (it is strongly recommended to first read the \ref ChapterCombinatorialMap "Combinatorial maps user manual" or \ref ChapterGeneralizedMap "Generalized maps user manual" for definitions). To add the linear geometrical embedding, a point (a model of \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 data-structure.
\cgalFigureBegin{fig_lcc_example_subdivisions,lcc_example_subdivisions.svg}
Examples of objects with linear geometry. <B>Left</B>: A 2D object composed of three 2-cells, nine 1-cells and seven points associated to the seven 0-cells . <B>Right</B>: A 3D object composed of three 3-cells, twelve 2-cells, sixteen 1-cells and eight points associated to the eight 0-cells.
@ -24,33 +24,30 @@ If we reconsider the example introduced in the combinatorial map package, recall
Example of 3D linear cell complex describing the object given in \cgalFigureRef{fig_lcc_example_subdivisions} (Right). <B>Left</B>: The 3D linear cell complex which contains 54 darts (18 for each 3-cell) where each vertex is associated with a point, here a `Point_3`. Blue segments represent \f$ \beta_3\f$ relations. <B>Middle</B>: Zoom around the central edge which details the six darts belonging to the edge and the associations between darts and points. <B>Right</B>: Zoom around the facet between light gray and white 3-cells, which details the eight darts belonging to the facet and the associations between darts and points (given by red segments).
\cgalFigureEnd
\cgalModifBegin
Things are similar for generalized map, as illustrated in \cgalFigureRef{fig_lcc_example_gmap}. In this example, a 2D generalized map is used as underlying data-structure to describe the object given in \cgalFigureRef{fig_lcc_example_subdivisions} (Left). The 2D linear cell complex shown in \cgalFigureRef{fig_lcc_example_gmap} (Left) is obtained from this 2D generalized map by associating a point to each vertex of the map. We can compare in \cgalFigureRef{fig_lcc_example_subdivisions} (Right) this 2D linear cell complex with the 2D linear cell complex describing the same 2D object but using 2D combinatorial maps (instead of generalized map). The only difference comes from the original definitions of combinatorial and generalized maps. Combinatorial maps have twice less darts than generalized maps, and thus the corresponding 2D linear cell complex has twice less association between darts and points.
\cgalFigureBegin{fig_lcc_example_gmap,lcc_example_gmap.svg}
Example of 2D linear cell complexes describing the object given in \cgalFigureRef{fig_lcc_example_subdivisions} (Left). (Left) Based on a 2D generalized map. (Right) Based on a 2D combinatorial map. In both cases, each vertex of the combinatorial data-structure is associated with a point, here a `Point_2`. Associations between darts and points is drawn by red segments.
\cgalFigureEnd
\cgalModifEnd
Note that the dimension of the combinatorial \tred{or the generalized} map <I>d</I> is not necessarily equal to the dimension of the ambient space <I>d2</I>. Indeed, we can use for example a 2D combinatorial map in a 2D ambient space to describe a planar graph (<I>d</I>=<I>d2</I>=<I>2</I>), or a 2D combinatorial map in a 3D ambient space to describe a surface in 3D space (<I>d</I>=2, <I>d2</I>=3) (case of the `Polyhedron_3` package), or a 3D \tred{generalized} map in a 3D ambient space (<I>d</I>=<I>d2</I>=3) and so on.
Note that the dimension of the combinatorial or the generalized map <I>d</I> is not necessarily equal to the dimension of the ambient space <I>d2</I>. Indeed, we can use for example a 2D combinatorial map in a 2D ambient space to describe a planar graph (<I>d</I>=<I>d2</I>=<I>2</I>), or a 2D combinatorial map in a 3D ambient space to describe a surface in 3D space (<I>d</I>=2, <I>d2</I>=3) (case of the `Polyhedron_3` package), or a 3D generalized map in a 3D ambient space (<I>d</I>=<I>d2</I>=3) and so on.
\section Linear_cell_complexSoftware Software Design
\tred{The diagram in \cgalFigureRef{fig_lcc_diagramme_class} shows the main classes of the package. `Linear_cell_complex_for_combinatorial_map` is the main class if you use combinatorial maps as combinatorial data-structure, and `Linear_cell_complex_for_generalized_map` is the main class if you use generalized maps as combinatorial data-structure (see Section \ref sseclinearcellcomplex). `Linear_cell_complex_for_combinatorial_map` inherits from the `Combinatorial_map` class and `Linear_cell_complex_for_generalized_map` inherits from the `Generalized_map` class.} Attributes can be associated to some cells of the linear cell complex thanks to an items class (see Section \ref sseclccitem "Linear Cell Complex Items"), which defines \tred{the information associated to darts,} and the attributes types. These types may be different for different dimensions of cells, and they may also be void. In the class `Linear_cell_complex_for_combinatorial_map`, it is required that specific attributes are associated to all vertices of the \tred{combinatorial or generalized} map. These attributes must contain a point (a model of \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").
The diagram in \cgalFigureRef{fig_lcc_diagramme_class} shows the main classes of the package. `Linear_cell_complex_for_combinatorial_map` is the main class if you use combinatorial maps as combinatorial data-structure, and `Linear_cell_complex_for_generalized_map` is the main class if you use generalized maps as combinatorial data-structure (see Section \ref sseclinearcellcomplex). `Linear_cell_complex_for_combinatorial_map` inherits from the `Combinatorial_map` class and `Linear_cell_complex_for_generalized_map` inherits from the `Generalized_map` class. Attributes can be associated to some cells of the linear cell complex thanks to an items class (see Section \ref sseclccitem "Linear Cell Complex Items"), which defines the information associated to darts, and the attributes types. These types may be different for different dimensions of cells, and they may also be void. In the class `Linear_cell_complex_for_combinatorial_map`, it is required that specific attributes are associated to all vertices of the combinatorial or generalized map. These attributes must contain a point (a model of \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").
\cgalFigureBegin{fig_lcc_diagramme_class,lcc_diagramme_class.svg}
UML diagram of the main classes of the package. Gray elements come from the \ref ChapterCombinatorialMap "Combinatorial maps" \tred{and \ref ChapterGeneralizedMap "Generalized maps"} packages.
UML diagram of the main classes of the package. Gray elements come from the \ref ChapterCombinatorialMap "Combinatorial maps" and \ref ChapterGeneralizedMap "Generalized maps" packages.
\cgalFigureEnd
\section sseclinearcellcomplex Linear Cell Complex
The \link CGAL::Linear_cell_complex_for_combinatorial_map `Linear_cell_complex_for_combinatorial_map<d,d2,LCCTraits,Items,Alloc>`\endlink class is a model of the `LinearCellComplex` concept \tred{that uses a combinatorial map as underlying combinatorial data-structure}. Similarly, the \link CGAL::Linear_cell_complex_for_generalized_map `Linear_cell_complex_for_generalized_map<d,d2,LCCTraits,Items,Alloc>`\endlink class is a model of the `LinearCellComplex` concept \tred{that uses a generalized map as underlying combinatorial data-structure. These two classes} guarantee that each vertex is associated with an attribute containing a point. These classes can be used in geometric algorithms (they play the same role as `Polyhedron_3` for \ref chapterHalfedgeDS "Halfedge Data Structures").
The \link CGAL::Linear_cell_complex_for_combinatorial_map `Linear_cell_complex_for_combinatorial_map<d,d2,LCCTraits,Items,Alloc>`\endlink class is a model of the `LinearCellComplex` concept that uses a combinatorial map as underlying combinatorial data-structure. Similarly, the \link CGAL::Linear_cell_complex_for_generalized_map `Linear_cell_complex_for_generalized_map<d,d2,LCCTraits,Items,Alloc>`\endlink class is a model of the `LinearCellComplex` concept that uses a generalized map as underlying combinatorial data-structure. These two classes guarantee that each vertex is associated with an attribute containing a point. These classes can be used in geometric algorithms (they play the same role as `Polyhedron_3` for \ref chapterHalfedgeDS "Halfedge Data Structures").
These classes has five template parameters standing for the dimension of the map, the dimension of the ambient space, a traits class (a model of the `LinearCellComplexTraits` concept, see Section \ref sseclcctraits "Linear Cell Complex Traits"), an items class (a model of the `LinearCellComplexItems` concept, see Section \ref sseclccitem "Linear Cell Complex Items"), and an allocator which must be a model of the allocator concept of \stl. %Default classes are provided for the traits, items, and for the allocator classes, and by default `d2=d`.
A linear cell complex is valid, if it is a valid combinatorial \tred{or generalized} map where each dart is associated with an attribute containing a point (i.e.\ an instance of a model of the `CellAttributeWithPoint`
A linear cell complex is valid, if it is a valid combinatorial or generalized map where each dart is associated with an attribute containing a point (i.e.\ an instance of a model of the `CellAttributeWithPoint`
concept). Note that there are no validity constraints on the geometry (test on self intersection, planarity of 2-cells...). We can see two examples of `Linear_cell_complex_for_combinatorial_map` in \cgalFigureRef{fig_lcc_instantiations}.
\cgalFigureBegin{fig_lcc_instantiations,lcc_instantiations.svg}
@ -75,21 +72,21 @@ The class `Linear_cell_complex_traits<d,K>` is a model of `LinearCellComplexTrai
The `LinearCellComplexItems` concept refines the `GenericMapItems` concept by adding the requirement that 0-attributes are enabled, and associated with a type of attribute being a model of the `CellAttributeWithPoint` concept.
The class `Linear_cell_complex_min_items<d>` is a model of `LinearCellComplexItems`. \tred{It defines `void` as information associated to darts,} and instances of `Cell_attribute_with_point` (which contain no information) associated to each vertex. All other attributes are `void`.
The class `Linear_cell_complex_min_items<d>` is a model of `LinearCellComplexItems`. It defines `void` as information associated to darts, and instances of `Cell_attribute_with_point` (which contain no information) associated to each vertex. All other attributes are `void`.
\section Linear_cell_complexOperations Operations
Several operations defined in the combinatorial maps \tred{or generalized 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: `sew`, `unsew`, \link GenericMap::remove_cell `remove_cell`\endlink, \link GenericMap::insert_cell_1_in_cell_2 `insert_cell_1_in_cell_2`\endlink or \link GenericMap::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 `unsew` method, but these 0-attributes are not new but copies of existing old 0-attributes.
Several operations defined in the combinatorial maps or generalized 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: `sew`, `unsew`, \link GenericMap::remove_cell `remove_cell`\endlink, \link GenericMap::insert_cell_1_in_cell_2 `insert_cell_1_in_cell_2`\endlink or \link GenericMap::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 `unsew` 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: \link GenericMap::insert_cell_0_in_cell_1 `insert_cell_0_in_cell_1`\endlink, \link GenericMap::insert_cell_0_in_cell_2 `insert_cell_0_in_cell_2`\endlink, \link GenericMap::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 linear cell complex. As for a combinatorial \tred{or generalized} map, it is also possible to use low level operations but additional operations may be needed to restore the validity conditions.
All the operations given in this section guarantee that given a valid linear cell complex and a possible operation, the result is a valid linear cell complex. As for a combinatorial or generalized map, it is also possible to use low level operations but additional operations may be needed to restore the validity conditions.
\subsection sseclcclinkdarts Sewing and Unsewing
As explained in the \ref sseclinkdarts "combinatorial map" and \tred{and \ref sseclinkdarts_gmap "generalized map" } user manuals, it is possible to glue two <I>i</I>-cells along an (<I>i</I>-1)-cell by using the `sew<i>` method. Since this method updates non void attributes, and since points are specific attributes, they are automatically updated during the `sew<i>` method. Thus the sewing of two <I>i</I>-cells could deform the geometry of the concerned objects.
As explained in the \ref sseclinkdarts "combinatorial map" and \ref sseclinkdarts_gmap "generalized map" user manuals, it is possible to glue two <I>i</I>-cells along an (<I>i</I>-1)-cell by using the `sew<i>` method. Since this method updates non void attributes, and since points are specific attributes, they are automatically updated during the `sew<i>` 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. \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 \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 modified by defining your own functor in the attribute class as explained in the packages combinatorial map \tred{and generalized map}. Intuitively, the geometry of the second 2-cell is deformed to fit to the first 2-cell.
For example, in \cgalFigureRef{fig_lcc_example_3d_sew}, we want to 3-sew the 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 \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 modified by defining your own functor in the attribute class as explained in the packages combinatorial map and generalized map. 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 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.
@ -104,7 +101,7 @@ If \link GenericMap::set_automatic_attributes_management `set_automatic_attribut
\subsection Linear_cell_complexConstructionOperations Construction Operations
\anchor ssecconstructionsop
There are several member functions allowing to insert specific configurations of darts into a linear cell complex. These functions return a `Dart_handle` to the new object. Note that the dimension of the linear cell complex must be large enough: darts must contain all the \tred{applications (\f$ \alpha\f$ or \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 \link LinearCellComplex::make_segment `make_segment`\endlink, \link LinearCellComplex::make_triangle `make_triangle`\endlink, \link LinearCellComplex::make_tetrahedron `make_tetrahedron`\endlink and \link LinearCellComplex::make_hexahedron `make_hexahedron`\endlink.
There are several member functions allowing to insert specific configurations of darts into a linear cell complex. These functions return a `Dart_handle` to the new object. Note that the dimension of the linear cell complex must be large enough: darts must contain all the applications (\f$ \alpha\f$ or \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 \link LinearCellComplex::make_segment `make_segment`\endlink, \link LinearCellComplex::make_triangle `make_triangle`\endlink, \link LinearCellComplex::make_tetrahedron `make_tetrahedron`\endlink and \link LinearCellComplex::make_hexahedron `make_hexahedron`\endlink.
There are two functions allowing to build a linear cell complex from two other \cgal data types:
<UL>

View File

@ -29,7 +29,7 @@
\cgalPkgPicture{lcc_logo.png}
\cgalPkgSummaryBegin
\cgalPkgAuthor{Guillaume Damiand}
\cgalPkgDesc{This package implements linear cell complexes, objects in <I>d</I>-dimension with linear geometry. The combinatorial part of objects is described \tred{either by a combinatorial or a generalized map}, representing all the cells of the object plus the incidence and adjacency relations between cells. Geometry is added to \tred{the combinatorial data-structure} simply by associating a point to each vertex of the map. Taking a 2D combinatorial map, and using 3D points, gives a linear cell complex equivalent to a <I>Polyhedron_3</I>.}
\cgalPkgDesc{This package implements linear cell complexes, objects in <I>d</I>-dimension with linear geometry. The combinatorial part of objects is described either by a combinatorial or a generalized map, representing all the cells of the object plus the incidence and adjacency relations between cells. Geometry is added to the combinatorial data-structure simply by associating a point to each vertex of the map. Taking a 2D combinatorial map, and using 3D points, gives a linear cell complex equivalent to a <I>Polyhedron_3</I>.}
\cgalPkgManuals{Chapter_Linear_Cell_Complex,PkgLinearCellComplex}
\cgalPkgSummaryEnd
\cgalPkgShortInfoBegin