Moka kernel
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
mesh-diver.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 #ifndef MESH_DIVER_HH
26 #define MESH_DIVER_HH
27 //******************************************************************************
28 #include <vector>
29 #include "vector.hh"
30 #include "vertex.hh"
31 //******************************************************************************
39 class CVertex;
40 //******************************************************************************
46 // @{
47 //******************************************************************************
49 {
50 protected:
51  int FSx;
53 
54 public:
55  // @name Constructeur et destructeur
56  // @{
57 
63  CMesh1Diver(int ASx);
64 
66  virtual ~CMesh1Diver();
67 
69 
70  // @name Accesseurs
71  // @{
72 
74  int getSx() const;
75 
80  virtual void setIx(int AIx);
81 
82  // @}
83  // @name Méthode de calcul des plongements
84  // @{
85 
90  virtual CVertex computeCurrentVertex() const = 0;
91 
92  // @}
93 };
94 //------------------------------------------------------------------------------
95 class CMesh2Diver : public CMesh1Diver
96 {
97 protected:
98  int FSy;
100 
101 public:
102  // @name Constructeur et destructeur
103  // @{
104 
111  CMesh2Diver(int ASx, int ASy);
112 
114  virtual ~CMesh2Diver();
115 
116  // @}
117  // @name Accesseurs
118  // @{
119 
120  // @return Le nombre de subdivisions du maillage selon la 2ème dimension
121  int getSy() const;
122 
127  virtual void setIy(int AIy);
128 
129  // @}
130 };
131 //------------------------------------------------------------------------------
132 class CMesh3Diver : public CMesh2Diver
133 {
134 protected:
135  int FSz;
137 
138 public:
139  // @name Constructeur et destructeur
140  // @{
141 
149  CMesh3Diver(int ASx, int ASy, int ASz);
150 
152  virtual ~CMesh3Diver();
153 
154  // @}
155  // @name Accesseurs
156  // @{
157 
159  int getSz() const;
160 
165  virtual void setIz(int AIz);
166 
167  // @}
168 };
169 
170 // @}
171 //******************************************************************************
177 // @{
178 //******************************************************************************
180 {
181 private:
182  CVertex FOrigin;
183  CVertex FVectorX;
184 
185 public:
186  // @name Constructeur et destructeur
187  // @{
188 
198  CMesh1BasicDiver(int ASx,
199  const CVertex& AOrigin,
200  const CVertex& AVectorX);
201 
203  virtual ~CMesh1BasicDiver();
204 
205  // @}
206  // @name Méthode de calcul des plongements
207  // @{
208 
210  virtual CVertex computeCurrentVertex() const;
211 
212  // @}
213 };
214 //------------------------------------------------------------------------------
216 {
217 private:
218  CVertex FOrigin;
219  CVertex FVectorX;
220  CVertex FVectorY;
221 
222 public:
223  // @name Constructeur et destructeur
224  // @{
225 
238  CMesh2BasicDiver(int ASx, int ASy,
239  const CVertex & AOrigin,
240  const CVertex & AVectorX,
241  const CVertex & AVectorY);
242 
244  virtual ~CMesh2BasicDiver();
245 
246  // @}
247  // @name Méthode de calcul des plongements
248  // @{
249 
251  virtual CVertex computeCurrentVertex() const;
252 
253  // @}
254 };
255 //------------------------------------------------------------------------------
257 {
258 private:
259  CVertex FOrigin;
260  CVertex FVectorX;
261  CVertex FVectorY;
262  CVertex FVectorZ;
263 
264 public:
265  // @name Constructeur et destructeur
266  // @{
267 
282  CMesh3BasicDiver(int ASx, int ASy, int ASz,
283  const CVertex& AOrigin,
284  const CVertex& AVectorX,
285  const CVertex& AVectorY,
286  const CVertex& AVectorZ);
287 
289  virtual ~CMesh3BasicDiver();
290 
291  // @}
292  // @name Méthode de calcul des plongements
293  // @{
294 
296  virtual CVertex computeCurrentVertex() const;
297 
298  // @}
299 };
300 
301 // @}
302 //******************************************************************************
308 // @{
309 //******************************************************************************
311 {
312 protected:
313  std::vector<CVertex> FVertices;
314 
315 public:
316  // @name Constructeur et destructeur
317  // @{
318 
325  CMesh1VectorDiver(const std::vector<CVertex>& AVector);
326 
328  virtual ~CMesh1VectorDiver();
329 
330  // @}
331  // @name Méthode de calcul des plongements
332  // @{
333 
335  virtual CVertex computeCurrentVertex() const;
336 
337  // @}
338 };
339 //******************************************************************************
341 //******************************************************************************
342 #include INCLUDE_INLINE("mesh-diver.icc")
343 //******************************************************************************
344 #endif // MESH_DIVER_HH
345 //******************************************************************************