MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
mailleur_delaunay.h
Aller à la documentation de ce fichier.
1 //####//------------------------------------------------------------
2 //####//------------------------------------------------------------
3 //####// MAGiC
4 //####// Jean Christophe Cuilliere et Vincent FRANCOIS
5 //####// Departement de Genie Mecanique - UQTR
6 //####//------------------------------------------------------------
7 //####// MAGIC est un projet de recherche de l equipe ERICCA
8 //####// du departement de genie mecanique de l Universite du Quebec a Trois Rivieres
9 //####// http://www.uqtr.ca/ericca
10 //####// http://www.uqtr.ca/
11 //####//------------------------------------------------------------
12 //####//------------------------------------------------------------
13 //####//
14 //####// mailleur_delaunay.h
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:55 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 #ifndef _MAILLEUR_DELAUNAY_
23 #define _MAILLEUR_DELAUNAY_
24 
25 
26 
27 
28 #include <stdlib.h>
29 #include <string>
30 #include "mailleur.h"
31 #include "fct_generateur_3d.h"
32 #include "mailleur3d.h"
33 
34 
35 
37 {
38 public :
39  MAILLEUR_DELAUNAY(class MG_MAILLAGE *m,class FCT_TAILLE *cartetmp,double crit_arret,class OT_CPU* comp=NULL);
40  MAILLEUR_DELAUNAY(MG_MAILLAGE* m,BOITE_3D boiteext,class OT_CPU* comp);
41  virtual ~MAILLEUR_DELAUNAY();
42  virtual int maille(class MG_GROUPE_TOPOLOGIQUE* mggt=NULL);
43  virtual void change_niveau_optimisation(int num);
44  virtual void ajouter_noeud(double &x, double &y, double &z,double epsbordure=0.01);
45 
46 
47 
48 protected:
49  virtual int est_de_delaunay(void);
50  virtual void transfert_maillage(std::vector<class DLY_NOEUD*> *tabn,std::vector<class DLY_TRIANGLE*> *tabe2d,std::vector<class DLY_TETRA*> *tabe3d);
51  virtual void insere_noeud_delaunay(DLY_TETRA* tet,double x,double y,double z);
52  virtual class DLY_TETRA* cree_tetra(class DLY_NOEUD* n1,DLY_NOEUD* n2,DLY_NOEUD* n3,DLY_NOEUD* n4);
53  virtual class DLY_TRIANGLE* get_triangle(DLY_NOEUD* n1,DLY_NOEUD* n2,DLY_NOEUD* n3);
54  virtual class DLY_SEGMENT* get_segment(DLY_NOEUD* n1,DLY_NOEUD* n2);
55  virtual void mise_a_jour_voisin(DLY_TETRA* tet);
56  virtual void ajoute_tetra_cavite(DLY_TETRA* tet,std::vector<DLY_TETRA*> &cavite,std::vector<DLY_TRIANGLE*> &basetri);
57  virtual void retire_tetra_cavite(DLY_TETRA* tet,std::vector<DLY_TETRA*> &cavite,std::vector<DLY_TRIANGLE*> &basetri);
58  virtual void initialise_maillage(void);
59  virtual void raffine_maillage(void);
60  virtual DLY_TETRA* get_tetra(double x,double y,double z);
61  virtual DLY_TETRA* get_tetra(DLY_TETRA* tet,double x,double y,double z);
62  virtual int modifie_cavite(std::vector<DLY_TETRA*> &cavite,std::vector<DLY_TRIANGLE*> &basetri,int nbbase,double x, double y,double z);
63  virtual void ajouter_front(double crit,DLY_SEGMENT* seg);
64  virtual void retirer_front(DLY_SEGMENT* seg);
67  std::vector<class DLY_NOEUD*> tabnoeud;
68  std::vector<class DLY_TETRA*> tabtet;
69  std::vector<class DLY_TRIANGLE*> tabtri;
70  std::vector<class DLY_SEGMENT*> tabseg;
71  //std::multimap<double, DLY_TETRA*,std::greater<double> > front;
72  std::multimap<double, DLY_SEGMENT*,std::greater<double> > front_trie;
73  std::map<const unsigned long long, DLY_SEGMENT* > front;
74  double critere_arret;
76  const int DELAUNAYCARTE=1010;
77  const int DELAUNAYLISTENOEUD=1020;
80  std::vector<double> xnoeud;
81  std::vector<double> ynoeud;
82  std::vector<double> znoeud;
83 
84 };
85 
86 
87 
88 
89 
90 
91 #endif
std::vector< class DLY_SEGMENT * > tabseg
virtual DLY_TETRA * get_tetra(double x, double y, double z)
virtual int modifie_cavite(std::vector< DLY_TETRA * > &cavite, std::vector< DLY_TRIANGLE * > &basetri, int nbbase, double x, double y, double z)
MAILLEUR_DELAUNAY(class MG_MAILLAGE *m, class FCT_TAILLE *cartetmp, double crit_arret, class OT_CPU *comp=NULL)
virtual void retire_tetra_cavite(DLY_TETRA *tet, std::vector< DLY_TETRA * > &cavite, std::vector< DLY_TRIANGLE * > &basetri)
virtual void retirer_front(DLY_SEGMENT *seg)
std::map< const unsigned long long, DLY_SEGMENT * > front
virtual void mise_a_jour_voisin(DLY_TETRA *tet)
virtual class DLY_TRIANGLE * get_triangle(DLY_NOEUD *n1, DLY_NOEUD *n2, DLY_NOEUD *n3)
const int DELAUNAYLISTENOEUD
virtual void raffine_maillage(void)
virtual void ajoute_tetra_cavite(DLY_TETRA *tet, std::vector< DLY_TETRA * > &cavite, std::vector< DLY_TRIANGLE * > &basetri)
virtual class DLY_SEGMENT * get_segment(DLY_NOEUD *n1, DLY_NOEUD *n2)
std::vector< class DLY_TETRA * > tabtet
virtual void ajouter_front(double crit, DLY_SEGMENT *seg)
virtual class DLY_TETRA * cree_tetra(class DLY_NOEUD *n1, DLY_NOEUD *n2, DLY_NOEUD *n3, DLY_NOEUD *n4)
virtual void insere_noeud_delaunay(DLY_TETRA *tet, double x, double y, double z)
std::vector< class DLY_NOEUD * > tabnoeud
virtual void initialise_maillage(void)
std::vector< double > znoeud
virtual void transfert_maillage(std::vector< class DLY_NOEUD * > *tabn, std::vector< class DLY_TRIANGLE * > *tabe2d, std::vector< class DLY_TETRA * > *tabe3d)
std::vector< double > ynoeud
virtual int maille(class MG_GROUPE_TOPOLOGIQUE *mggt=NULL)
std::vector< double > xnoeud
virtual void change_niveau_optimisation(int num)
std::multimap< double, DLY_SEGMENT *, std::greater< double > > front_trie
virtual void ajouter_noeud(double &x, double &y, double &z, double epsbordure=0.01)
virtual int est_de_delaunay(void)
std::vector< class DLY_TRIANGLE * > tabtri
Definition: ot_cpu.h:32
#define m(i, j)