ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/CAD4FE/src/CAD4FE_mailleur2d.h
Revision: 1158
Committed: Thu Jun 13 22:18:49 2024 UTC (11 months ago) by francois
Content type: text/plain
File size: 6558 byte(s)
Log Message:
compatibilité Ubuntu 22.04
Suppression des refeences à Windows
Ajout d'une banière

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     //####// CAD4FE_mailleur2d.h
15     //####//
16     //####//------------------------------------------------------------
17     //####//------------------------------------------------------------
18     //####// COPYRIGHT 2000-2024
19     //####// jeu 13 jun 2024 11:58:56 EDT
20     //####//------------------------------------------------------------
21     //####//------------------------------------------------------------
22 foucault 27 #ifndef mailleur2dH
23     #define mailleur2dH
24    
25     #include "CAD4FE_Mesher_platform.h"
26    
27     #ifdef BORLANDCPP
28     #include <map.h>
29     #else
30     #include <map>
31 foucault 569 #endif
32     #include <string>
33     #include <sstream>
34     #include <fstream>
35 foucault 27
36     #include "ot_decalage_parametre.h"
37     #include "mg_noeud.h"
38     #include "mg_segment.h"
39     #include "mg_maillage.h"
40     #include "mg_geometrie.h"
41     #include "mg_face.h"
42     #include "fct_taille_face.h"
43     #include "tpl_grille.h"
44    
45     #include "CAD4FE_mailleur.h"
46     #include "CAD4FE_mg_front_2D.h"
47     #include "CAD4FE_m3d_MCTriangle.h"
48     #include "CAD4FE_MCSegment.h"
49     #include "CAD4FE_MCNode.h"
50     #include "CAD4FE_MCFace.h"
51    
52    
53     #define CAS_FRONT_3 1
54     #define CAS_FRONT_4 2
55     #define CAS_FERME_CAVITE_P 3
56     #define CAS_FERME_CAVITE_S 4
57     #define CAS_FERME_CAVITE 5
58     #define CAS_GENERAL 6
59     #define CAS_FRONT_3X 7
60    
61     #define PASTROUVE 10
62     #define TROUVE 11
63    
64     #define TOUS_SEGMENT 20
65     #define TOUS_FRONT 21
66     #define RIEN 22
67    
68     #define NOEUD_CREE 30
69     #define FRONT_RENCONTRE 31
70     #define ERREUR 32
71    
72     namespace CAD4FE {
73    
74 francois 1158 class MAILLEUR2D:public MAILLEUR
75 foucault 27 {
76     public :
77     typedef std::multimap<double,MG_FRONT_2D*,std::less<double> > FRONT;
78     typedef std::multimap<double,M3D_MCTriangle*,std::less<double> > ORDRE_TRIANGLE;
79    
80     MAILLEUR2D(MG_MAILLAGE* mgmai,MG_GEOMETRIE *mggeo,MCFace* __mcFace, FCT_TAILLE* fct_taille=NULL);
81     ~MAILLEUR2D();
82    
83    
84    
85     void maille(void);
86     void maille(MCFace* __mcFace);
87    
88     void initialise_lst_tri_qual(MCFace* __mcFace);
89     void optimise(MCFace* __mcFace);
90     void optimise_bascule_segment(MCFace* __mcFace);
91     char filenameNbTriangles[5000];
92 foucault 569 int debug;
93     void ClearLog();
94 foucault 27
95     private :
96     int creation_metrique;
97    
98     void initialise_frontiere(MCFace* __mcFace);
99     void cree_grille(MCFace* __mcFace);
100     void initialise_front(MCFace* __mcFace);
101 foucault 64 void initialise_front (MCFace * __mcFace, std::set<MCVertex*> __isolatedInteriorVertices);
102 foucault 27 void progresse_front(MCFace* __mcFace);
103    
104     int traite_front(int type_front,MCFace *__mcFace,MG_FRONT_2D* ftp,MG_FRONT_2D* ft,MG_FRONT_2D* fts);
105     int traite_front_cas_front_3(MCFace *__mcFace,MG_FRONT_2D* ftp,MG_FRONT_2D* ft,MG_FRONT_2D* fts);
106     int identifie_front_cas_front_3x(MG_FRONT_2D* ftp,MG_FRONT_2D* ft,MG_FRONT_2D* fts);
107     int traite_front_cas_front_3x(MCFace *__mcFace,MG_FRONT_2D* ftp,MG_FRONT_2D* ft,MG_FRONT_2D* fts);
108     int identifie_front_cas_front_4x(MG_FRONT_2D* ftp,MG_FRONT_2D* ft,MG_FRONT_2D* fts);
109     int traite_front_cas_front_4x(MCFace *__mcFace,MG_FRONT_2D* ftp,MG_FRONT_2D* ft,MG_FRONT_2D* fts);
110     int traite_front_cas_front_4(MCFace *__mcFace,MG_FRONT_2D* ftp,MG_FRONT_2D* ft,MG_FRONT_2D* fts);
111     int identifie_front_cas_front_4(MG_FRONT_2D* ftp,MG_FRONT_2D* ft,MG_FRONT_2D* fts);
112     int traite_front_cas_ferme_cavite(MCFace *__mcFace,MG_FRONT_2D* ftp,MG_FRONT_2D* ft,MG_FRONT_2D* fts);
113     int traite_front_cas_ferme_cavite_p(MCFace *__mcFace,MG_FRONT_2D* ftp,MG_FRONT_2D* ft,MG_FRONT_2D* fts);
114     int traite_front_cas_ferme_cavite_s(MCFace *__mcFace,MG_FRONT_2D* ftp,MG_FRONT_2D* ft,MG_FRONT_2D* fts);
115     int traite_front_cas_general(MCFace *__mcFace,MG_FRONT_2D* ftp,MG_FRONT_2D* ft,MG_FRONT_2D* fts);
116     int noeud_est_dans_triangle(MCNode* noeud,MG_TRIANGLE *triangle);
117     int noeud_est_dans_triangle(MCNode* noeud,MCNode *noeud1,MCNode *noeud2,MCNode *noeud3);
118     int triangle_est_dans_bon_sens(MCFace* face,MCNode* noeud1,MCNode *noeud2,MCNode *noeud3);
119 foucault 569 int triangle_est_dans_bon_sens_front(MG_FRONT_2D * front,MCNode *noeud3);
120     int triangles_sont_dans_meme_sens(MCFace* face,MCNode* noeud1,MCNode *noeud2,MCNode *noeud2bis,MCNode *noeud3);
121 foucault 64 int genere_noeud(MCFace* __mcFace, MCNode *__interiorIsolatedNode, MG_FRONT_2D **front_rencontre,MCNode **noeud_rencontre);
122 foucault 27 int genere_noeud(MCFace* __mcFace,MG_FRONT_2D* front,MG_FRONT_2D **front_rencontre,MCNode **noeud);
123     int insere_segment(MCFace *mgface,MCSegment **nv_segment,MCNode* noeud1,MCNode* noeud2,int type_verication,double __tolerance = 0.0);
124     void supprime_segment(MCSegment *__segment);
125     MCTriangle* insere_triangle(MG_ELEMENT_TOPOLOGIQUE* topo, MCNode *mgnoeud1, MCNode *mgnoeud2, MCNode *mgnoeud3);
126     int bouge_point(MCFace* __mcFace, MCNode *mg_noeud, double& crit, MCNode **__result);
127     void verifie_front();
128    
129     int examine_solution(double sol1,double sol2,int type);
130    
131     double calcule_distance_metrique(MG_FACE* mgface,double u1,double v1,double u2,double v2,double du,double dv);
132    
133     MG_FRONT_2D* ajouter_front(FRONT& front,MCNode* noeud1,MCNode* noeud2,MCSegment* segment);
134     void ajouter_front(FRONT& front,MG_FRONT_2D *ft);
135     MG_FRONT_2D* get_front(FRONT& front,unsigned int num);
136     unsigned int get_nb_front(FRONT& front);
137     void supprimer_front(MG_FRONT_2D* ft);
138     MG_FRONT_2D * trouver_front(MG_NOEUD * no1, MG_NOEUD * no2);
139     void supprimer_front(MG_SEGMENT * seg);
140     void echange_de_front(FRONT& front_original,FRONT& front_destination,MG_FRONT_2D* ft);
141    
142 foucault 64 void export_ivanim();
143     void export_ivanim_all_faces();
144    
145 foucault 569 void WriteLog(std::string __text);
146    
147 foucault 27 MG_MAILLAGE* mg_maillage;
148     MG_GEOMETRIE* mg_geometrie;
149     MCFace * _mcFace;
150     FCT_TAILLE *metrique;
151    
152    
153     TPL_LISTE_ENTITE<MG_SEGMENT*> segment_frontiere;
154     TPL_LISTE_ENTITE<MG_NOEUD*> noeud_frontiere;
155     TPL_GRILLE<MCSegment*> *grille_de_segment;
156     TPL_GRILLE<MCSegment*> *grille_de_frontiere;
157     TPL_GRILLE<MG_FRONT_2D*> *grille_de_front;
158     FRONT front_courant;
159     FRONT front_attente;
160 foucault 569 FRONT lst_front_superpose;
161 foucault 27 ORDRE_TRIANGLE lst_tri_qual;
162     ORDRE_TRIANGLE lst_tri_qual2;
163     std::map<MG_ELEMENT_TOPOLOGIQUE*,int> _nbTriangles;
164 foucault 569 std::ofstream _logFile;
165 foucault 27 };
166    
167     }
168    
169    
170    
171    
172     #endif