diff --git a/Combinatorial_map/doc/Combinatorial_map/Concepts/CombinatorialMap.h b/Combinatorial_map/doc/Combinatorial_map/Concepts/CombinatorialMap.h index e9f94d9412d..3041f0c13da 100644 --- a/Combinatorial_map/doc/Combinatorial_map/Concepts/CombinatorialMap.h +++ b/Combinatorial_map/doc/Combinatorial_map/Concepts/CombinatorialMap.h @@ -15,7 +15,7 @@ class CombinatorialMap { public: /*! -The null dart handle constant. +The null dart descriptor constant. A dart `d` is i-free if `beta(d, i)==null_dart_descriptor`. Note that `*null_dart_descriptor`\f$ \notin\f$`darts()`. */ @@ -25,62 +25,62 @@ Dart_descriptor null_dart_descriptor; /// @{ /*! -Returns \f$ \beta_j\f$(\f$ \beta_i\f$(`*dh`)). +Returns \f$ \beta_j\f$(\f$ \beta_i\f$(`d`)). Overloads of this member function are defined that take from one to nine integer as arguments. For each function, betas are applied in the same order as their indices are given as parameters. -For example `beta(dh,1)`=\f$ \beta_1\f$(`*dh`), -and `beta(dh,1,2,3,0)`=\f$ \beta_0\f$(\f$ \beta_3\f$(\f$ \beta_2\f$(\f$ \beta_1\f$(`*dh`)))). +For example `beta(d,1)`=\f$ \beta_1\f$(`d`), +and `beta(d,1,2,3,0)`=\f$ \beta_0\f$(\f$ \beta_3\f$(\f$ \beta_2\f$(\f$ \beta_1\f$(`d`)))). \pre 0 \f$ \leq\f$ i \f$ \leq\f$ \link GenericMap::dimension `dimension`\endlink, 0 \f$ \leq\f$ j \f$ \leq\f$ \link GenericMap::dimension `dimension`\endlink - and `*dh`\f$ \in\f$ \link GenericMap::darts `darts()`\endlink. + and `d`\f$ \in\f$ \link GenericMap::darts `darts()`\endlink. */ -Dart_descriptor beta(Dart_descriptor dh, int i, int j); +Dart_descriptor beta(Dart_descriptor d, int i, int j); /*! -Returns \f$ \beta_j\f$(\f$ \beta_i\f$(`*dh`)). +Returns \f$ \beta_j\f$(\f$ \beta_i\f$(`d`)). Overloads of this member function are defined that take from one to nine integer as arguments. \pre 0 \f$ \leq\f$ i \f$ \leq\f$ \link GenericMap::dimension `dimension`\endlink, 0 \f$ \leq\f$ j \f$ \leq\f$ \link GenericMap::dimension `dimension`\endlink - and `*dh`\f$ \in\f$ \link GenericMap::darts `darts()`\endlink. + and `d`\f$ \in\f$ \link GenericMap::darts `darts()`\endlink. */ -Dart_const_descriptor beta(Dart_const_descriptor dh, int i, int j) const; +Dart_const_descriptor beta(Dart_const_descriptor d, int i, int j) const; /*! -Returns \f$ \beta_j\f$(\f$ \beta_i\f$(`*dh`)). +Returns \f$ \beta_j\f$(\f$ \beta_i\f$(`d`)). Overloads of this member function are defined that take from one to nine integer as template arguments. For each function, betas are applied in the same order as their indices are given as template arguments. -For example `beta<1>(dh)`=\f$ \beta_1\f$(`*dh`), -and `beta<1,2,3,0>(dh)`=\f$ \beta_0\f$(\f$ \beta_3\f$(\f$ \beta_2\f$(\f$ \beta_1\f$(`*dh`)))). +For example `beta<1>(d)`=\f$ \beta_1\f$(`d`), +and `beta<1,2,3,0>(d)`=\f$ \beta_0\f$(\f$ \beta_3\f$(\f$ \beta_2\f$(\f$ \beta_1\f$(`d`)))). \pre 0 \f$ \leq\f$ i \f$ \leq\f$ \link GenericMap::dimension `dimension`\endlink, 0 \f$ \leq\f$ j \f$ \leq\f$ \link GenericMap::dimension `dimension`\endlink - and `*dh`\f$ \in\f$ \link GenericMap::darts `darts()`\endlink. + and `d`\f$ \in\f$ \link GenericMap::darts `darts()`\endlink. */ template -Dart_descriptor beta(Dart_descriptor dh); +Dart_descriptor beta(Dart_descriptor d); /*! -Returns \f$ \beta_j\f$(\f$ \beta_i\f$(`*dh`)). +Returns \f$ \beta_j\f$(\f$ \beta_i\f$(`d`)). Overloads of this member function are defined that take from one to nine integer as template arguments. \pre 0 \f$ \leq\f$ i \f$ \leq\f$ \link GenericMap::dimension `dimension`\endlink, 0 \f$ \leq\f$ j \f$ \leq\f$ \link GenericMap::dimension `dimension`\endlink - and `*dh`\f$ \in\f$ \link GenericMap::darts `darts()`\endlink. + and `d`\f$ \in\f$ \link GenericMap::darts `darts()`\endlink. */ template -Dart_const_descriptor beta(Dart_const_descriptor dh) const; +Dart_const_descriptor beta(Dart_const_descriptor d) const; /*! -Returns a handle to a dart belonging to the same edge than dart `*dh`, and not to the same vertex. `nullptr` if such a dart does not exist. +Returns a descriptor to a dart belonging to the same edge than dart `d`, and not to the same vertex. `null_descriptor` if such a dart does not exist. */ -Dart_descriptor opposite(Dart_descriptor dh); +Dart_descriptor opposite(Dart_descriptor d); /*! -Returns a const handle to a dart belonging to the same edge than dart `*dh`, and not to the same vertex, when the dart is const. `nullptr` if such a dart does not exist. +Returns a const descriptor to a dart belonging to the same edge than dart `d`, and not to the same vertex, when the dart is const. `null_descriptor` if such a dart does not exist. */ -Dart_const_descriptor opposite(Dart_const_descriptor dh) const; +Dart_const_descriptor opposite(Dart_const_descriptor d) const; /*! Returns true iff the combinatorial map is valid. @@ -108,67 +108,67 @@ bool is_valid() const; /// @{ /*! -Links `*dh1` and `*dh2` by \f$ \beta_i\f$. -The combinatorial map can be no longer valid after this operation. If \link GenericMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==true`, non void attributes of `*dh1` and `*dh2` are updated: if one dart has an attribute and the second dart not, the non null attribute is associated to the dart having a null attribute. -If both darts have an attribute, the attribute of `*dh1` is associated to `*dh2`. +Links `d1` and `d2` by \f$ \beta_i\f$. +The combinatorial map can be no longer valid after this operation. If \link GenericMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==true`, non void attributes of `d1` and `d2` are updated: if one dart has an attribute and the second dart not, the non null attribute is associated to the dart having a null attribute. +If both darts have an attribute, the attribute of `d1` is associated to `d2`. \pre 0 \f$ \leq\f$ i \f$ \leq\f$ \link GenericMap::dimension `dimension`\endlink, - `*dh1`\f$ \in\f$ \link GenericMap::darts `darts()`\endlink, `*dh2`\f$ \in\f$ \link GenericMap::darts `darts()`\endlink and (i\f$ <\f$ 2 or `dh1`\f$ \neq\f$`dh2`). + `d1`\f$ \in\f$ \link GenericMap::darts `darts()`\endlink, `d2`\f$ \in\f$ \link GenericMap::darts `darts()`\endlink and (i\f$ <\f$ 2 or `d1`\f$ \neq\f$`d2`). */ -template void link_beta(Dart_descriptor dh1, Dart_descriptor dh2); +template void link_beta(Dart_descriptor d1, Dart_descriptor d2); /*! -Unlinks `*dh` and \f$ \beta_i\f$(`*dh`) by \f$ \beta_i\f$. +Unlinks `d` and \f$ \beta_i\f$(`d`) by \f$ \beta_i\f$. The combinatorial map can be no longer valid after this operation. -Attributes of `*dh` and \f$ \beta_i\f$(`*dh`) are not modified. +Attributes of `d` and \f$ \beta_i\f$(`d`) are not modified. \pre 0 \f$ \leq\f$ i \f$ \leq\f$ \link GenericMap::dimension `dimension`\endlink, - `*dh`\f$ \in\f$ \link GenericMap::darts `darts()`\endlink, and `*dh` is not i-free. + `d`\f$ \in\f$ \link GenericMap::darts `darts()`\endlink, and `d` is not i-free. */ -template void unlink_beta(Dart_descriptor dh); +template void unlink_beta(Dart_descriptor d); /// @} /// \name Operations /// @{ /*! -Returns true iff `*dh1` can be i-sewn with `*dh2` by keeping the generic map valid. +Returns true iff `d1` can be i-sewn with `d2` by keeping the generic map valid. -This is true if there is a bijection f between all the darts of the orbit D1=\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$(*dh1) and D2=\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$(*dh2) satisfying: -- f(*dh1)=*dh2, +This is true if there is a bijection f between all the darts of the orbit D1=\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$(d1) and D2=\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$(d2) satisfying: +- f(d1)=d2, - \f$ \forall \f$ e\f$ \in\f$ D1, \f$ \forall \f$ j\f$ \in\f$ {1,\f$ \ldots\f$,i-2,i+2,\f$ \ldots\f$,d}, f(\f$ \beta_j\f$(e))=\f$ \beta_j^{-1}\f$(f(e)). \pre 0 \f$ \leq \f$ i \f$ \leq \f$ \link GenericMap::dimension `dimension`\endlink, - `*dh1`\f$ \in \f$ `darts()`, and `*dh2`\f$ \in \f$ `darts()`. + `d1`\f$ \in \f$ `darts()`, and `d2`\f$ \in \f$ `darts()`. */ -template bool is_sewable(Dart_const_descriptor dh1, Dart_const_descriptor dh2) const; +template bool is_sewable(Dart_const_descriptor d1, Dart_const_descriptor d2) const; /*! - i-sew darts `*dh1` and `*dh2`, by keeping the generic map valid. + i-sew darts `d1` and `d2`, by keeping the generic map valid. -Links by \f$ \beta_i \f$ two by two all the darts of the orbit D1=\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$(`*dh1`) and D2=\f$ \langle{}\f$\f$ \beta_0\f$,\f$ \beta_2\f$,\f$ \ldots\f$,\f$ \beta_{i-2}\f$,\f$ \beta_{i+2}\f$,\f$ \ldots\f$,\f$ \beta_d\f$\f$ \rangle{}\f$(`*dh2`) such that d2=f(d1), where f is the bijection between D1 and D2 satisfying: f(*dh1)=*dh2, and for all e \f$ \in \f$ D1, for all j \f$ \in \f$ {1,\f$ \ldots\f$,i-2,i+2,\f$ \ldots\f$,d}, f(\f$ \beta_j\f$(e))=\f$ \beta_j^{-1}\f$(f(e)). +Links by \f$ \beta_i \f$ two by two all the darts of the orbit D1=\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$(`d1`) and D2=\f$ \langle{}\f$\f$ \beta_0\f$,\f$ \beta_2\f$,\f$ \ldots\f$,\f$ \beta_{i-2}\f$,\f$ \beta_{i+2}\f$,\f$ \ldots\f$,\f$ \beta_d\f$\f$ \rangle{}\f$(`d2`) such that d2=f(d1), where f is the bijection between D1 and D2 satisfying: f(d1)=d2, and for all e \f$ \in \f$ D1, for all j \f$ \in \f$ {1,\f$ \ldots\f$,i-2,i+2,\f$ \ldots\f$,d}, f(\f$ \beta_j\f$(e))=\f$ \beta_j^{-1}\f$(f(e)). -If \link GenericMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==true`, when necessary, non void attributes are updated to ensure the validity of the generic map: for each j-cells c1 and c2 which are merged into one j-cell during the sew, the two associated attributes attr1 and attr2 are considered. If one attribute is `nullptr` and the other not, the non `nullptr` attribute is associated to all the darts of the resulting cell. When the two attributes are non `nullptr`, functor \link CellAttribute::On_merge `Attribute_type::type::On_merge`\endlink is called on the two attributes attr1 and attr2. If set, the dynamic onmerge function of i-attributes is also called on attr1 and attr2. Then, the attribute attr1 is associated to all darts of the resulting j-cell. Finally, attribute attr2 is removed from the generic map. -\pre \link CombinatorialMap::is_sewable `is_sewable(dh1,dh2)`\endlink. +If \link GenericMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==true`, when necessary, non void attributes are updated to ensure the validity of the generic map: for each j-cells c1 and c2 which are merged into one j-cell during the sew, the two associated attributes attr1 and attr2 are considered. If one attribute is `null_descriptor` and the other not, the non `null_descriptor` attribute is associated to all the darts of the resulting cell. When the two attributes are non `null_descriptor`, functor \link CellAttribute::On_merge `Attribute_type::type::On_merge`\endlink is called on the two attributes attr1 and attr2. If set, the dynamic onmerge function of i-attributes is also called on attr1 and attr2. Then, the attribute attr1 is associated to all darts of the resulting j-cell. Finally, attribute attr2 is removed from the generic map. +\pre \link CombinatorialMap::is_sewable `is_sewable(d1,d2)`\endlink. \cgalAdvancedBegin If \link GenericMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==false`, non void attributes are not updated; thus the generic map can be no more valid after this operation. \cgalAdvancedEnd */ -template void sew(Dart_descriptor dh1,Dart_descriptor dh2); +template void sew(Dart_descriptor d1,Dart_descriptor d2); /*! - i-unsew darts `*dh` and `*opposite(*dh)`, by keeping the generic map valid. + i-unsew darts `d` and `*opposite(d)`, by keeping the generic map valid. -Unlinks by \f$ \beta_i\f$ all the darts in the orbit \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$(`*dh`). +Unlinks by \f$ \beta_i\f$ all the darts in the orbit \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$(`d`). If \link GenericMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==true`, when necessary, non void attributes are updated to ensure the validity of the generic map: for each j-cell c split in two j-cells c1 and c2 by the operation, if c is associated to a j-attribute attr1, then this attribute is duplicated into attr2, and all the darts belonging to c2 are associated with this new attribute. Finally, the functor \link CellAttribute::On_split `Attribute_type::type::On_split`\endlink is called on the two attributes attr1 and attr2. If set, the dynamic onsplit function of i-attributes is also called on attr1 and attr2. -\pre 0 \f$ \leq \f$ i \f$ \leq \f$ \link GenericMap::dimension `dimension`\endlink, `*dh`\f$ \in \f$ `darts()` and `*dh` is not i-free. +\pre 0 \f$ \leq \f$ i \f$ \leq \f$ \link GenericMap::dimension `dimension`\endlink, `d`\f$ \in \f$ `darts()` and `d` is not i-free. \cgalAdvancedBegin If \link GenericMap::are_attributes_automatically_managed `are_attributes_automatically_managed()`\endlink`==false`, non void attributes are not updated thus the generic map can be no more valid after this operation. \cgalAdvancedEnd */ -template void unsew(Dart_descriptor dh); +template void unsew(Dart_descriptor d); /*! Reverse the orientation (swap \f$ \beta_0\f$ and \f$ \beta_1\f$ links) of the entire map. @@ -178,7 +178,7 @@ void reverse_orientation(); /*! Reverse the orientation (swap \f$ \beta_0\f$ and \f$ \beta_1\f$ links) of the connected component containing the given dart. */ -void reverse_orientation_connected_component(Dart_descriptor adart); +void reverse_orientation_connected_component(Dart_descriptor d); /// @}