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
TPL_OCTREE< MG_TRIANGLE *, MG_NOEUD * > octree
Definition: mailleur_stl.h:89
double angle_arete
Definition: mailleur_stl.h:84
virtual int maille(class MG_GROUPE_TOPOLOGIQUE *mggt=NULL)
virtual int optimise_maillage(void)
virtual void ajouter_seg_a_discretiser(MG_SEGMENT *seg)
double angle_limite
Definition: mailleur_stl.h:85
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)
virtual void valide_maillage(void)
virtual bool respecte_delaunay(double x, double y, double z, MG_TRIANGLE *tri)
virtual int bouge_point(MG_NOEUD *mg_noeud, double &crit, double &x, double &y, double &z)
double qualmaxaopt
Definition: mailleur_stl.h:91
virtual void change_qualmaxaoptimiser(double val)
virtual void supprimer_seg_a_discretiser(MG_SEGMENT *seg)
virtual double get_angle_arete(void)
virtual void change_pas(int val)
virtual void change_nx(int val)
char fichierpoint[5000]
Definition: mailleur_stl.h:93
virtual MG_TRIANGLE * get_voisin(MG_TRIANGLE *tri, int cote)
virtual void change_angle_arete(double val)
virtual void determine_arete(void)
virtual void verification_conformite(void)
MG_MAILLAGE * maiin
Definition: mailleur_stl.h:81
virtual void change_nz(int val)
FCT_TAILLE * metrique2
Definition: mailleur_stl.h:82
virtual void projete_point_sur_triangulation(double x, double y, double z, double &nvx, double &nvy, double &nvz)
virtual void change_nxnynz(int nvx, int nvy, int nvz)
FCT_TAILLE * metrique
Definition: mailleur_stl.h:82
virtual void change_nbpasseoptimisation(int nb)
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)
virtual void prepare_projection(void)
MG_GESTIONNAIRE * gest
Definition: mailleur_stl.h:83
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)
virtual void adapte_carte(void)
double limite_discretisation
Definition: mailleur_stl.h:86
virtual void calcul_nouveau_noeud(MG_SEGMENT *seg, double &x, double &y, double &z, OT_VECTEUR_3D &normale)
virtual void change_ny(int val)
virtual void cree_maillage(void)
virtual ~MAILLEUR_STL()
virtual bool fichierpointexiste(void)
std::multimap< double, MG_SEGMENT *, std::greater< double > > lstsegadiscretiser
Definition: mailleur_stl.h:88
MG_MAILLAGE * mai
Definition: mailleur_stl.h:81
MG_GESTIONNAIRE * gesttmp
Definition: mailleur_stl.h:83
virtual void change_fichierpoint(char *nom)