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

# User Rev Content
1 francois 1158 //####//------------------------------------------------------------
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 francois 1082 #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 francois 1111 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 francois 1082 MAILLEUR_STL(MAILLEUR_STL &mdd);
46     virtual ~MAILLEUR_STL();
47    
48     virtual int maille(class MG_GROUPE_TOPOLOGIQUE* mggt=NULL);
49 francois 1111 virtual void change_fichierpoint(char *nom);
50 francois 1082 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 francois 1111 virtual bool fichierpointexiste(void);
62 francois 1082 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 francois 1083 virtual void valide_maillage(void);
68     virtual void verification_conformite(void);
69 francois 1082 virtual int bouge_point(MG_NOEUD* mg_noeud,double& crit,double& x,double& y, double& z);
70    
71 francois 1111 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 francois 1082 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 francois 1111 char fichierpoint[5000];
94 francois 1082
95     };
96    
97    
98    
99    
100    
101    
102    
103    
104    
105    
106    
107    
108    
109    
110    
111    
112     #endif