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); |
45 |
MAILLEUR_STL(MAILLEUR_STL &mdd); |
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 |
|
81 |
MG_MAILLAGE *maiin,*mai; |
82 |
FCT_TAILLE *metrique,*metrique2; |
83 |
MG_GESTIONNAIRE *gest,*gesttmp; |
84 |
double angle_arete; |
85 |
double angle_limite; |
86 |
double limite_discretisation; |
87 |
int pas; |
88 |
std::multimap<double,MG_SEGMENT*,std::greater<double > > lstsegadiscretiser; |
89 |
TPL_OCTREE<MG_TRIANGLE*,MG_NOEUD*> octree; |
90 |
int nx,ny,nz; |
91 |
double qualmaxaopt; |
92 |
int nbcoucheopt; |
93 |
char fichierpoint[5000]; |
94 |
|
95 |
}; |
96 |
|
97 |
|
98 |
|
99 |
|
100 |
|
101 |
|
102 |
|
103 |
|
104 |
|
105 |
|
106 |
|
107 |
|
108 |
|
109 |
|
110 |
|
111 |
|
112 |
#endif |