ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/mailleur/src/mailleur_stl.h
Revision: 1189
Committed: Tue Feb 4 17:26:49 2025 UTC (3 months ago) by francois
Content type: text/plain
File size: 3948 byte(s)
Log Message:
Version 5.0 de MAGIC. Integration de ALGLIB pour faire de l'optimisation. ALGLIB se download automatiquement en executant un script dans le repertoire config update_magic.bash


File Contents

# Content
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