MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
mailleur_stl.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_stl.h
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:55 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 #ifndef _MAILLEUR_STL_
23 #define _MAILLEUR_STL_
24 
25 #include "mailleur.h"
26 #include <vector>
27 #include <math.h>
28 #include <map>
29 #include "tpl_liste_entite.h"
30 #include "ot_mathematique.h"
31 #include <tpl_octree.h>
32 
33 
34 class MG_MAILLAGE;
35 class FCT_TAILLE;
36 class MG_GESTIONNAIRE;
37 class MG_SEGMENT;
38 class MG_TRIANGLE;
39 class MG_NOEUD;
40 
41 class MAILLEUR_STL:public MAILLEUR
42 {
43 public:
44 MAILLEUR_STL(MG_MAILLAGE* maiori,MG_GESTIONNAIRE* gt,FCT_TAILLE* carte,double limite=1.2,double angle1=M_PI/7.,double angle2=M_PI/9,char * nomfichierpoint=NULL);
46 virtual ~MAILLEUR_STL();
47 
48 virtual int maille(class MG_GROUPE_TOPOLOGIQUE* mggt=NULL);
49 virtual void change_fichierpoint(char *nom);
50 virtual void change_angle_arete(double val);
51 virtual double get_angle_arete(void);
52 virtual void change_pas(int val);
53 virtual void change_nx(int val);
54 virtual void change_ny(int val);
55 virtual void change_nz(int val);
56 virtual void change_nxnynz(int nvx,int nvy,int nvz);
57 virtual void change_qualmaxaoptimiser(double val);
58 virtual void change_nbpasseoptimisation(int nb);
59 
60 protected:
61 virtual bool fichierpointexiste(void);
62 virtual void adapte_carte(void);
63 virtual void determine_arete(void);
64 virtual void prepare_projection(void);
65 virtual void cree_maillage(void);
66 virtual int optimise_maillage(void);
67 virtual void valide_maillage(void);
68 virtual void verification_conformite(void);
69 virtual int bouge_point(MG_NOEUD* mg_noeud,double& crit,double& x,double& y, double& z);
70 
71 virtual void calcul_nouveau_noeud(MG_SEGMENT* seg,double& x, double& y, double& z,OT_VECTEUR_3D &normale);
72 virtual void calcul_etoile(MG_SEGMENT* seg,MG_TRIANGLE *tri,double &x,double &y,double &z,OT_VECTEUR_3D &normale,TPL_LISTE_ENTITE<MG_TRIANGLE*> &listuniquetri,std::map<unsigned long,std::pair<MG_SEGMENT*,int> > &lstsegment);
73 virtual void maillage_et_segadiscretiser_update(MG_SEGMENT* segbase,double x,double y,double z,OT_VECTEUR_3D normale,TPL_LISTE_ENTITE<MG_TRIANGLE*> &listuniquetri,std::map<unsigned long,std::pair<MG_SEGMENT*,int> > &lstsegment,TPL_LISTE_ENTITE<MG_TRIANGLE *>& listnouvtri,bool contraint);
74 virtual bool respecte_delaunay(double x,double y,double z,MG_TRIANGLE* tri);
75 virtual MG_TRIANGLE* get_voisin(MG_TRIANGLE* tri,int cote);
76 virtual void ajouter_seg_a_discretiser(MG_SEGMENT* seg);
77 virtual void supprimer_seg_a_discretiser(MG_SEGMENT* seg);
78 virtual void projete_point_sur_triangulation(double x,double y,double z,double &nvx,double &nvy,double &nvz);
79 
80 
84 double angle_arete;
85 double angle_limite;
87 int pas;
88 std::multimap<double,MG_SEGMENT*,std::greater<double > > lstsegadiscretiser;
90 int nx,ny,nz;
91 double qualmaxaopt;
93 char fichierpoint[5000];
94 
95 };
96 
97 
98 
99 
100 
101 
102 
103 
104 
105 
106 
107 
108 
109 
110 
111 
112 #endif
MAILLEUR_STL::mai
MG_MAILLAGE * mai
Definition: mailleur_stl.h:81
MAILLEUR_STL::respecte_delaunay
virtual bool respecte_delaunay(double x, double y, double z, MG_TRIANGLE *tri)
Definition: mailleur_stl.cpp:794
MAILLEUR_STL::supprimer_seg_a_discretiser
virtual void supprimer_seg_a_discretiser(MG_SEGMENT *seg)
Definition: mailleur_stl.cpp:901
MG_SEGMENT
Definition: mg_segment.h:38
MAILLEUR_STL::optimise_maillage
virtual int optimise_maillage(void)
Definition: mailleur_stl.cpp:149
MAILLEUR_STL::change_nxnynz
virtual void change_nxnynz(int nvx, int nvy, int nvz)
Definition: mailleur_stl.cpp:952
MAILLEUR_STL::calcul_nouveau_noeud
virtual void calcul_nouveau_noeud(MG_SEGMENT *seg, double &x, double &y, double &z, OT_VECTEUR_3D &normale)
Definition: mailleur_stl.cpp:356
MAILLEUR_STL::octree
TPL_OCTREE< MG_TRIANGLE *, MG_NOEUD * > octree
Definition: mailleur_stl.h:89
MAILLEUR_STL::pas
int pas
Definition: mailleur_stl.h:87
MAILLEUR_STL::valide_maillage
virtual void valide_maillage(void)
Definition: mailleur_stl.cpp:318
MAILLEUR_STL::verification_conformite
virtual void verification_conformite(void)
Definition: mailleur_stl.cpp:92
MAILLEUR_STL::maiin
MG_MAILLAGE * maiin
Definition: mailleur_stl.h:81
MAILLEUR_STL::change_nbpasseoptimisation
virtual void change_nbpasseoptimisation(int nb)
Definition: mailleur_stl.cpp:929
MAILLEUR_STL::metrique2
FCT_TAILLE * metrique2
Definition: mailleur_stl.h:82
MAILLEUR_STL::get_angle_arete
virtual double get_angle_arete(void)
Definition: mailleur_stl.cpp:875
MAILLEUR_STL::nx
int nx
Definition: mailleur_stl.h:90
MAILLEUR_STL::fichierpoint
char fichierpoint[5000]
Definition: mailleur_stl.h:93
MG_TRIANGLE
Definition: mg_triangle.h:38
FCT_TAILLE
Definition: fct_taille.h:30
MAILLEUR_STL::gest
MG_GESTIONNAIRE * gest
Definition: mailleur_stl.h:83
MG_GESTIONNAIRE
Definition: mg_gestionnaire.h:57
MAILLEUR_STL::projete_point_sur_triangulation
virtual void projete_point_sur_triangulation(double x, double y, double z, double &nvx, double &nvy, double &nvz)
Definition: mailleur_stl.cpp:836
MAILLEUR_STL::change_ny
virtual void change_ny(int val)
Definition: mailleur_stl.cpp:941
MAILLEUR_STL::change_nx
virtual void change_nx(int val)
Definition: mailleur_stl.cpp:935
MAILLEUR_STL::maille
virtual int maille(class MG_GROUPE_TOPOLOGIQUE *mggt=NULL)
Definition: mailleur_stl.cpp:54
MAILLEUR_STL::MAILLEUR_STL
MAILLEUR_STL(MG_MAILLAGE *maiori, MG_GESTIONNAIRE *gt, FCT_TAILLE *carte, double limite=1.2, double angle1=M_PI/7., double angle2=M_PI/9, char *nomfichierpoint=NULL)
Definition: mailleur_stl.cpp:34
mailleur.h
MAILLEUR_STL::gesttmp
MG_GESTIONNAIRE * gesttmp
Definition: mailleur_stl.h:83
MAILLEUR_STL::maillage_et_segadiscretiser_update
virtual void maillage_et_segadiscretiser_update(MG_SEGMENT *segbase, double x, double y, double z, OT_VECTEUR_3D normale, TPL_LISTE_ENTITE< MG_TRIANGLE * > &listuniquetri, std::map< unsigned long, std::pair< MG_SEGMENT *, int > > &lstsegment, TPL_LISTE_ENTITE< MG_TRIANGLE * > &listnouvtri, bool contraint)
Definition: mailleur_stl.cpp:585
MAILLEUR_STL::metrique
FCT_TAILLE * metrique
Definition: mailleur_stl.h:82
MAILLEUR_STL::angle_limite
double angle_limite
Definition: mailleur_stl.h:85
MAILLEUR_STL::nbcoucheopt
int nbcoucheopt
Definition: mailleur_stl.h:92
MAILLEUR_STL::get_voisin
virtual MG_TRIANGLE * get_voisin(MG_TRIANGLE *tri, int cote)
Definition: mailleur_stl.cpp:880
MAILLEUR_STL::ajouter_seg_a_discretiser
virtual void ajouter_seg_a_discretiser(MG_SEGMENT *seg)
Definition: mailleur_stl.cpp:894
MAILLEUR_STL::qualmaxaopt
double qualmaxaopt
Definition: mailleur_stl.h:91
MAILLEUR_STL::ny
int ny
Definition: mailleur_stl.h:90
MG_NOEUD
Definition: mg_noeud.h:41
MAILLEUR_STL::bouge_point
virtual int bouge_point(MG_NOEUD *mg_noeud, double &crit, double &x, double &y, double &z)
Definition: mailleur_stl.cpp:512
MAILLEUR_STL::change_qualmaxaoptimiser
virtual void change_qualmaxaoptimiser(double val)
Definition: mailleur_stl.cpp:960
MAILLEUR_STL::lstsegadiscretiser
std::multimap< double, MG_SEGMENT *, std::greater< double > > lstsegadiscretiser
Definition: mailleur_stl.h:88
tpl_octree.h
MAILLEUR_STL::nz
int nz
Definition: mailleur_stl.h:90
MAILLEUR_STL::adapte_carte
virtual void adapte_carte(void)
Definition: mailleur_stl.cpp:226
ot_mathematique.h
MAILLEUR_STL::fichierpointexiste
virtual bool fichierpointexiste(void)
Definition: mailleur_stl.cpp:912
OT_VECTEUR_3D
Definition: ot_mathematique.h:94
MAILLEUR_STL::determine_arete
virtual void determine_arete(void)
Definition: mailleur_stl.cpp:276
MAILLEUR_STL
Definition: mailleur_stl.h:41
MAILLEUR_STL::~MAILLEUR_STL
virtual ~MAILLEUR_STL()
Definition: mailleur_stl.cpp:46
MG_GROUPE_TOPOLOGIQUE
Definition: mg_groupe_topologique.h:31
MAILLEUR
Definition: mailleur.h:33
MAILLEUR_STL::angle_arete
double angle_arete
Definition: mailleur_stl.h:84
MG_MAILLAGE
Definition: mg_maillage.h:62
TPL_LISTE_ENTITE< MG_TRIANGLE * >
MAILLEUR_STL::prepare_projection
virtual void prepare_projection(void)
Definition: mailleur_stl.cpp:257
MAILLEUR_STL::change_angle_arete
virtual void change_angle_arete(double val)
Definition: mailleur_stl.cpp:869
MAILLEUR_STL::change_fichierpoint
virtual void change_fichierpoint(char *nom)
Definition: mailleur_stl.cpp:918
MAILLEUR_STL::calcul_etoile
virtual void calcul_etoile(MG_SEGMENT *seg, MG_TRIANGLE *tri, double &x, double &y, double &z, OT_VECTEUR_3D &normale, TPL_LISTE_ENTITE< MG_TRIANGLE * > &listuniquetri, std::map< unsigned long, std::pair< MG_SEGMENT *, int > > &lstsegment)
Definition: mailleur_stl.cpp:378
MAILLEUR_STL::limite_discretisation
double limite_discretisation
Definition: mailleur_stl.h:86
MAILLEUR_STL::cree_maillage
virtual void cree_maillage(void)
Definition: mailleur_stl.cpp:681
tpl_liste_entite.h
TPL_OCTREE< MG_TRIANGLE *, MG_NOEUD * >
MAILLEUR_STL::change_pas
virtual void change_pas(int val)
Definition: mailleur_stl.cpp:924
MAILLEUR_STL::change_nz
virtual void change_nz(int val)
Definition: mailleur_stl.cpp:947