Code_TYMPAN  4.4.0
Industrial site acoustic simulation
TYMaillage.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) <2012> <EDF-R&D> <FRANCE>
3  * This program is free software; you can redistribute it and/or modify
4  * it under the terms of the GNU General Public License as published by
5  * the Free Software Foundation; either version 2 of the License, or
6  * (at your option) any later version.
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10  * See the GNU General Public License for more details.
11  * You should have received a copy of the GNU General Public License along
12  * with this program; if not, write to the Free Software Foundation, Inc.,
13  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
14  */
15 
16 #ifndef __TY_Maillage__
17 #define __TY_Maillage__
18 
19 #include "Tympan/core/defines.h"
24 
25 class TYCalcul;
26 
28 static const double TY_MAILLAGE_DEFAULT_DENSITE = 0.1; // 1 point tous les 10m
29 
30 struct MPoint
31 {
34 };
35 
36 struct MTriangle
37 {
38  MPoint pts[3];
39 };
40 
50 class TYMaillage : public TYElement
51 {
54 
55  // Methodes
56 public:
62  TYMaillage();
63 
69  TYMaillage(const TYMaillage& other);
70 
76  virtual ~TYMaillage();
77 
79  TYMaillage& operator=(const TYMaillage& other);
80 
82  bool operator==(const TYMaillage& other) const;
83 
85  bool operator!=(const TYMaillage& other) const;
86 
95  virtual bool deepCopy(const TYElement* pOther, bool copyId = true, bool pUseCopyTag = false);
96 
97  virtual std::string toString() const;
98 
99  virtual DOM_Element toXML(DOM_Element& domElement);
100  virtual int fromXML(DOM_Element domElement);
101 
105  void exportCSV(const std::string& fileName);
106 
110  virtual void clearResult();
111 
116  virtual void updateFromCalcul(LPTYCalcul pCalcul);
117 
124  {
125  return _ptsCalcul;
126  }
127 
132  {
133  return _ptsCalcul;
134  }
135 
140  {
141  _ptsCalcul = list;
142  setIsGeometryModified(true);
143  }
144 
150  bool addPointCalcul(LPTYPointCalcul pPtCalcul);
151 
157  bool remPointCalcul(const LPTYPointCalcul pPtCalcul);
158 
164  bool remPointCalcul(QString idPtCalcul);
165 
170  void remAllPointCalcul();
171 
177  void setHauteur(double hauteur)
178  {
179  _hauteur = hauteur;
180  setIsGeometryModified(true);
181  }
182 
187  double getHauteur() const
188  {
189  return _hauteur;
190  }
191 
197  void setComputeAlti(bool state)
198  {
199  _computeAlti = state;
200  setIsGeometryModified(true);
201  }
202 
207  bool getComputeAlti() const
208  {
209  return _computeAlti;
210  }
211 
217  void setDataType(int type)
218  {
219  _dataType = type;
220  setIsGeometryModified(true);
221  }
222 
228  {
229  return _dataType;
230  }
231 
237  void setDataFreq(float freq)
238  {
239  _dataFreq = freq;
240  setIsGeometryModified(true);
241  }
246  float getDataFreq()
247  {
248  return _dataFreq;
249  }
250 
256  void setPalette(LPTYPalette pPalette)
257  {
258  _pPalette = pPalette;
259  }
260 
266  {
267  return _pPalette;
268  }
269 
274  void setPanel(LPTYPanel pPanel)
275  {
276  _pPanel = pPanel;
277  }
278 
285  {
286  return _pPanel;
287  }
288 
293  void make(const TYTabPoint& points);
294 
297  {
300  DataFreq
302  };
303 
306  {
308  Inactif
309  };
310 
311  static bool checkSimilar(const TYMaillage* const pMaillage1, const TYMaillage* const pMaillage2);
312 
322  void computeMesh(std::vector<MTriangle>& mesh) const;
323 
332 
338  double getSpectrumValue(TYPointCalcul& pt) const;
339 
351  void computeIsoCurve(std::vector<MTriangle>& mesh, std::vector<MPoint>& isoCurve) const;
352 
365  bool computeIsoPoint(const OHPlane3D& plane, const MPoint& pt1, const MPoint& pt2, MPoint& mp) const;
366 
373  virtual int getIndexPtCalcul(int x, int y) const
374  {
375  return 0;
376  }
377 
383  virtual void getDimensions(int& x, int& y) const {}
384 
388  virtual void setEtat(const TYUUID& id_calc, bool etat);
389  virtual bool etat();
390  virtual bool etat(const TYUUID& id_calc);
391  virtual bool etat(const TYCalcul* pCalc);
392 
394  void copyEtats(TYMaillage* pOther);
395 
401  void duplicateEtat(const TYUUID& idCalculRef, const TYUUID& idCalculNew);
402 
404  bool remEtat(TYCalcul* pCalcul);
405 
406  // Membres
407 protected:
410 
413 
415  double _hauteur;
416 
419 
422 
424  float _dataFreq;
425 
428 
431 };
432 
438 typedef std::vector<LPTYMaillageGeoNode> TYTabMaillageGeoNode;
440 typedef std::vector<LPTYMaillage> TYTabLPMaillage;
441 
442 #endif // __TY_Maillage__
QDomElement DOM_Element
Definition: QT2DOM.h:30
std::vector< LPTYPointCalcul > TYTabLPPointCalcul
Collection de pointeurs de TYPointCalcul.
Definition: TYDefines.h:358
class OGenID TYUUID
Definition: TYDefines.h:59
std::vector< TYPoint > TYTabPoint
Collection de TYPoint.
Definition: TYDefines.h:340
std::map< TYUUID, bool > TYMapIdBool
Tableau associant un booleen a un id (identifiant d'objet)
Definition: TYDefines.h:373
#define OPROTODECL(classname)
Definition: TYElement.h:65
#define TY_EXTENSION_DECL_ONLY(classname)
Definition: TYElement.h:386
TYGeometryNode TYMaillageGeoNode
Noeud geometrique de type TYMaillage.
Definition: TYMaillage.h:434
std::vector< LPTYMaillageGeoNode > TYTabMaillageGeoNode
Collection de noeuds geometriques de type TYMaillage.
Definition: TYMaillage.h:438
SmartPtr< TYMaillageGeoNode > LPTYMaillageGeoNode
Smart Pointer sur TYMaillageGeoNode.
Definition: TYMaillage.h:436
std::vector< LPTYMaillage > TYTabLPMaillage
Collection de maillages.
Definition: TYMaillage.h:440
The 3D Plane class using Hessian normal form.
Definition: 3d.h:1514
The 3D vector class.
Definition: 3d.h:298
Calculation program.
Definition: TYCalcul.h:50
virtual void setIsGeometryModified(bool isModified)
Definition: TYElement.cpp:253
Classe de definition d'un maillage.
Definition: TYMaillage.h:51
void setDataType(int type)
Set de l'indicateur de type des donnees a representer.
Definition: TYMaillage.h:217
bool _computeAlti
Indique si l'altitude des points constituant ce maillage doit etre calculee.
Definition: TYMaillage.h:418
void make(const TYTabPoint &points)
Rempli la structure de points de calcul a partir d'un tableau de points classiques.
Definition: TYMaillage.cpp:402
double _hauteur
La hauteur par rapport au sol (a l'altimetrie en fait) a laquelle se trouve ce maillage.
Definition: TYMaillage.h:415
void setPalette(LPTYPalette pPalette)
Set de la palette (_pPalette)
Definition: TYMaillage.h:256
virtual void clearResult()
Definition: TYMaillage.cpp:334
virtual ~TYMaillage()
Destructeur Destructeur de la classe TYMaillage.
Definition: TYMaillage.cpp:72
void setPtsCalcul(const TYTabLPPointCalcul &list)
Definition: TYMaillage.h:139
virtual void updateFromCalcul(LPTYCalcul pCalcul)
get datas from calcul void updateFromCalcul(LPTYCalcul pCalcul)
Definition: TYMaillage.cpp:320
void setHauteur(double hauteur)
Set de la hauteur de ce maillage par rapport au sol (a l'altimetrie en fait).
Definition: TYMaillage.h:177
bool operator!=(const TYMaillage &other) const
Operateur !=.
Definition: TYMaillage.cpp:128
TYTabLPPointCalcul & getPtsCalcul()
Set/Get de la liste des points de calcul.
Definition: TYMaillage.h:123
MTriangle computeTriangle(TYPointCalcul &pt1, TYPointCalcul &pt2, TYPointCalcul &pt3) const
Compute the triangle.
Definition: TYMaillage.cpp:530
@ ValGlobalDBLin
Definition: TYMaillage.h:299
static bool checkSimilar(const TYMaillage *const pMaillage1, const TYMaillage *const pMaillage2)
Definition: TYMaillage.cpp:412
void setDataFreq(float freq)
Set de la frequence des donnees a representer lorsque _dataType vaut DataFreq.
Definition: TYMaillage.h:237
void computeMesh(std::vector< MTriangle > &mesh) const
Compute the mesh.
Definition: TYMaillage.cpp:457
double getHauteur() const
Definition: TYMaillage.h:187
virtual std::string toString() const
Definition: TYMaillage.cpp:160
void computeIsoCurve(std::vector< MTriangle > &mesh, std::vector< MPoint > &isoCurve) const
Compute the isocurve.
Definition: TYMaillage.cpp:564
bool addPointCalcul(LPTYPointCalcul pPtCalcul)
Ajoute un nouveau point de calcul.
Definition: TYMaillage.cpp:342
int getDataType()
Get de l'indicateur de type des donnees a representer.
Definition: TYMaillage.h:227
virtual int getIndexPtCalcul(int x, int y) const
Return the index (should be pure virtual)
Definition: TYMaillage.h:373
virtual bool deepCopy(const TYElement *pOther, bool copyId=true, bool pUseCopyTag=false)
Definition: TYMaillage.cpp:133
int _dataType
Indique le type des donnees a representer.
Definition: TYMaillage.h:421
TYTabLPPointCalcul _ptsCalcul
Liste des points de calcul.
Definition: TYMaillage.h:409
TYMapIdBool _tabEtats
L'etat du maillage pour un calcul donne.
Definition: TYMaillage.h:412
void setComputeAlti(bool state)
Set de l'indicateur de calcul de l'altitude des points de ce maillage.
Definition: TYMaillage.h:197
virtual int fromXML(DOM_Element domElement)
Definition: TYMaillage.cpp:191
LPTYPanel getPanel()
Get du panel.
Definition: TYMaillage.h:284
TYMaillage & operator=(const TYMaillage &other)
Operateur =.
Definition: TYMaillage.cpp:77
void remAllPointCalcul()
Suppression de tous les elements.
Definition: TYMaillage.cpp:396
void duplicateEtat(const TYUUID &idCalculRef, const TYUUID &idCalculNew)
Duplique l'etat defini pour un calcul pour un autre calcul.
Definition: TYMaillage.cpp:687
virtual bool etat()
Definition: TYMaillage.cpp:647
void setPanel(LPTYPanel pPanel)
Set du panel.
Definition: TYMaillage.h:274
virtual void getDimensions(int &x, int &y) const
Return the dimensions in x and y (should be pure virtual)
Definition: TYMaillage.h:383
virtual DOM_Element toXML(DOM_Element &domElement)
Definition: TYMaillage.cpp:165
bool operator==(const TYMaillage &other) const
Operateur ==.
Definition: TYMaillage.cpp:92
bool computeIsoPoint(const OHPlane3D &plane, const MPoint &pt1, const MPoint &pt2, MPoint &mp) const
Compute an isopoint by interpolating the value if the segment intersects the plane.
Definition: TYMaillage.cpp:622
void copyEtats(TYMaillage *pOther)
Copie du map calcul-etat.
Definition: TYMaillage.cpp:676
const TYTabLPPointCalcul & getPtsCalcul() const
Definition: TYMaillage.h:131
void exportCSV(const std::string &fileName)
export mesh to csv file
Definition: TYMaillage.cpp:270
bool remEtat(TYCalcul *pCalcul)
Remove calcul from "etat" map.
Definition: TYMaillage.cpp:692
double getSpectrumValue(TYPointCalcul &pt) const
Get the spectrum value of a calcul point.
Definition: TYMaillage.cpp:545
LPTYPanel _pPanel
Panel.
Definition: TYMaillage.h:430
LPTYPalette _pPalette
Palette.
Definition: TYMaillage.h:427
bool getComputeAlti() const
Get de l'indicateur de calcul de l'altitude des points de ce maillage.
Definition: TYMaillage.h:207
LPTYPalette getPalette()
Get de la palette (_pPalette)
Definition: TYMaillage.h:265
virtual void setEtat(const TYUUID &id_calc, bool etat)
Definition: TYMaillage.cpp:642
TYMaillage()
Constructeur. Constructeur de la classe TYMaillage.
Definition: TYMaillage.cpp:36
bool remPointCalcul(const LPTYPointCalcul pPtCalcul)
Supprime une entree a la liste des points de calculs.
Definition: TYMaillage.cpp:355
float getDataFreq()
Get de la frequence des donnees a representer lorsque _dataType vaut DataFreq.
Definition: TYMaillage.h:246
float _dataFreq
La frequence des donnees a representer lorsque _dataType vaut DataFreq.
Definition: TYMaillage.h:424
float values_type
The real number type used to store values (typically double or float)
Definition: TYPalette.h:49
Classe de definition d'un point de calcul.C'est une classe derivee a TYPoint avec en plus un spectrep...
Definition: TYPointCalcul.h:33
TYPalette::values_type scalar
Definition: TYMaillage.h:33
OVector3D pt
Definition: TYMaillage.h:32
MPoint pts[3]
Definition: TYMaillage.h:38