Moka kernel
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
gmg-topology.hh
Go to the documentation of this file.
1 /*
2  * lib-gmapkernel : Un noyau de 3-G-cartes et des opérations.
3  * Copyright (C) 2004, Moka Team, Université de Poitiers, Laboratoire SIC
4  * http://www.sic.sp2mi.univ-poitiers.fr/
5  * Copyright (C) 2009, Guillaume Damiand, CNRS, LIRIS,
6  * guillaume.damiand@liris.cnrs.fr, http://liris.cnrs.fr/
7  *
8  * This file is part of lib-gmapkernel
9  *
10  * This program is free software: you can redistribute it and/or modify
11  * it under the terms of the GNU Lesser General Public License as published by
12  * the Free Software Foundation, either version 3 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU Lesser General Public License for more details.
19  *
20  * You should have received a copy of the GNU Lesser General Public License
21  * along with this program. If not, see <http://www.gnu.org/licenses/>.
22  */
23 
24 //******************************************************************************
25 // Ce fichier fait partie de "g-map-generic.hh".
26 //******************************************************************************
27 
28 public:
29 
37 bool belongToSameOrientedOrbit(CDart* ADart1, CDart* ADart2, TOrbit AOrbit);
38 
50 bool isOrientable(CDart* ADart, TOrbit AOrbit);
51 
61 void countBorders(int AMarkNumber,
62  int* ANb0, int* ANb1, int* ANb2, int* ANb3);
63 
73 void countBorders(CDart* ADart, TOrbit AOrbit,
74  int* ANb0, int* ANb1, int* ANb2, int* ANb3);
75 
81 unsigned int countNonLocalDegreeTwoEdges();
82 
91 void countCells(int AMarkNumber,
92  int* ANb0, int* ANb1, int* ANb2, int* ANb3, int* ANb4,
93  int* ANbDarts = NULL);
94 
104 void countCells(CDart* ADart, TOrbit AOrbit,
105  int* ANb0, int* ANb1, int* ANb2, int* ANb3, int* ANb4,
106  int* ANbDarts = NULL);
107 
117 void getGlobalCharacteristics(int* ANbDarts,
118  int* ANbVertices, int* ANbEdges,
119  int* ANbFaces, int* ANbVolumes, int* ANbCC,
120  int* ANb0Borders, int* ANb1Borders,
121  int* ANb2Borders, int* ANb3Borders);
122 
126 std::ostream& displayCharacteristics(std::ostream &AOs);
127 
144 void getSurfaceCharacteristics(CDart* ADart,
145  int* ANbDarts,
146  int* ANbVertices, int* ANbEdges,
147  int* ANbFaces,
148  int* ANb0Borders, int* ANb1Borders,
149  int* ANb2Borders,
150  int* ANb2BordersWhenClosed,
151  int* AEuler, int* AOrient, int* AGenus);
152 
163 std::string getSurfaceName(int AB2, int AQ, int AG);
164 
171 bool isConnex();
172 
180 bool checkTopology();
181 
197 bool checkEmbeddings(TOrbit AOrbit, int AAttributeIdentity,
198  bool AEmbeddingMustExist = true);
199 
210 bool isIClosedOrbit(CDart* ADart, int ADimension, TOrbit AOrbit);
211 
222 bool isIFreeOrbit(CDart* ADart, int ADimension, TOrbit AOrbit);
223 
229 int getMapDimension();
230 
234 bool isDanglingFace(CDart* ADart);
235 //******************************************************************************