MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
rec_squelette_opt.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 //####// rec_squelette_opt.h
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:56 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 #ifndef _REC_SQUELETTE_OPT_
23 #define _REC_SQUELETTE_OPT_
24 
25 #include "mg_file.h"
27 #include "sq_raccord.h"
28 #include <tpl_grille.h>
29 #include <math.h>
30 #include "mg_export.h"
31 
33 {
34 public:
37 
38  void import_squelette_cg(FILE *fichier_cg,MG_MAILLAGE* mai_sq);
39  void supp_squelette_nondesign(MG_MAILLAGE* mai_sq,MG_MAILLAGE* mai_nd);
42  void creation_LstBranches(MG_MAILLAGE* mai_sq);
43  void calcul_branches(MG_MAILLAGE* mai_peau,double param_dist=1.3,double angle_seuil=178.,double lambda=0.8);
44  void calcul_sections2(MG_MAILLAGE* mai_peau,int NbSecs,int NbPtsInterp);
45  void affichage_sections(MG_MAILLAGE* mai_sq);
46  void affichage_sections2(MG_MAILLAGE* mai_sq);
47  void calcul_guides(MG_MAILLAGE* mai_peau,MG_MAILLAGE* mai_nd);
48  void affichage_guides(MG_MAILLAGE* mai_sq);
49  void creation_LstJonctions(MG_MAILLAGE* mai_sq);
50  void calcul_sections_jonc(MG_MAILLAGE* mai_peau,MG_MAILLAGE* mai_sq,int NbPtsInterp=7,int theta=60);
52 
53  std::vector<SQ_BRANCHE*> getLstBranches();
54  std::vector<SQ_JONCTION*> getLstJonctions();
55 
56 protected:
58  int point_appartient_volume(double *xyz,TPL_LISTE_ENTITE<MG_TRIANGLE*>* lsttrifront,int numvol);
59  int inter_droite_triangle(double *xyz,double *dir,MG_TRIANGLE* tri,double *t);
60  void calcul_normales(SQ_BRANCHE* Bran);
61  void lissage_branche(SQ_BRANCHE* Bran,double angle_seuil,double lambda);
62  void recherche_contour(std::vector<MG_NOEUD*>* Contour,TPL_LISTE_ENTITE<MG_NOEUD*>* LstNoInter);
63  void centre_contour(std::vector<MG_NOEUD*>* Contour,double C[3]);
64  void calcul_section(TPL_MAP_ENTITE<MG_SEGMENT*>* MapSeg,double O[3],double V[3],double eps,std::vector<MG_NOEUD*>* section);
65  std::vector<SQ_NOEUD*> calcul_positions_sections(SQ_BRANCHE* Bran,int NbSecs);
66  SQ_NOEUD* milieu_branche(std::vector<SQ_NOEUD*>* branche);
67  double rayon_moyen(std::vector<MG_NOEUD*>* section, SQ_NOEUD* no_sq);
68  double rayon_max(std::vector<MG_NOEUD*>* section, SQ_NOEUD* no_sq);
69  void determine_dir_sec(SQ_NOEUD* no_sq,std::vector<MG_NOEUD*>* section);
71  void determine_dir_guide(int i);
72  int inter_segment_triangle(MG_NOEUD* noeud1,MG_NOEUD* noeud2,MG_NOEUD* noeud3,MG_NOEUD* noeud4,MG_NOEUD* noeud5);
74  void prolongation_guide(std::vector<MG_NOEUD*>* guide,int num_bran,double eps);
75  void determine_dirs_interf(SQ_INTERFACE* interf,double DistMax);
76 
79 
82  std::vector<SQ_BRANCHE*> LstBranches;
83  std::vector<SQ_JONCTION*> LstJonctions;
84 };
85 #endif
86 
REC_SQUELETTE_OPT::determine_dir_sec
void determine_dir_sec(SQ_NOEUD *no_sq, std::vector< MG_NOEUD * > *section)
Definition: rec_squelette_opt.cpp:1135
REC_SQUELETTE_OPT::import_squelette_cg
void import_squelette_cg(FILE *fichier_cg, MG_MAILLAGE *mai_sq)
Definition: rec_squelette_opt.cpp:38
TPL_MAP_ENTITE< MG_SEGMENT * >
REC_SQUELETTE_OPT::creation_LstBranches
void creation_LstBranches(MG_MAILLAGE *mai_sq)
Definition: rec_squelette_opt.cpp:447
REC_SQUELETTE_OPT::affichage_guides
void affichage_guides(MG_MAILLAGE *mai_sq)
Definition: rec_squelette_opt.cpp:1369
REC_SQUELETTE_OPT::GrilleSeg
TPL_GRILLE< MG_SEGMENT * > GrilleSeg
Definition: rec_squelette_opt.h:81
SQ_INTERFACE
Definition: sq_interface.h:27
REC_SQUELETTE_OPT::centre_contour
void centre_contour(std::vector< MG_NOEUD * > *Contour, double C[3])
Definition: rec_squelette_opt.cpp:427
mg_file.h
TPL_GRILLE< MG_TRIANGLE * >
REC_SQUELETTE_OPT::getLstBranches
std::vector< SQ_BRANCHE * > getLstBranches()
Definition: rec_squelette_opt.cpp:1811
REC_SQUELETTE_OPT::affichage_voisinage_seg
void affichage_voisinage_seg(TPL_MAP_ENTITE< MG_SEGMENT * > *MapSeg)
Definition: rec_squelette_opt.cpp:1747
REC_SQUELETTE_OPT::calcul_sections_jonc
void calcul_sections_jonc(MG_MAILLAGE *mai_peau, MG_MAILLAGE *mai_sq, int NbPtsInterp=7, int theta=60)
Definition: rec_squelette_opt.cpp:1454
sq_raccord.h
REC_SQUELETTE_OPT::creation_espaces_voisinage
void creation_espaces_voisinage(MG_MAILLAGE *mai_peau)
Definition: rec_squelette_opt.cpp:358
MG_TRIANGLE
Definition: mg_triangle.h:38
REC_SQUELETTE_OPT::calcul_guides
void calcul_guides(MG_MAILLAGE *mai_peau, MG_MAILLAGE *mai_nd)
Definition: rec_squelette_opt.cpp:1076
REC_SQUELETTE_OPT::calcul_positions_sections
std::vector< SQ_NOEUD * > calcul_positions_sections(SQ_BRANCHE *Bran, int NbSecs)
Definition: rec_squelette_opt.cpp:974
SQ_NOEUD
Definition: sq_noeud.h:28
REC_SQUELETTE_OPT::affichage_sections2
void affichage_sections2(MG_MAILLAGE *mai_sq)
Definition: rec_squelette_opt.cpp:1044
REC_SQUELETTE_OPT::GrilleTri
TPL_GRILLE< MG_TRIANGLE * > GrilleTri
Definition: rec_squelette_opt.h:80
SQ_BRANCHE
Definition: sq_branche.h:30
REC_SQUELETTE_OPT::supp_squelette_nondesign
void supp_squelette_nondesign(MG_MAILLAGE *mai_sq, MG_MAILLAGE *mai_nd)
Definition: rec_squelette_opt.cpp:66
REC_SQUELETTE_OPT::inter_segment_triangle
int inter_segment_triangle(MG_NOEUD *noeud1, MG_NOEUD *noeud2, MG_NOEUD *noeud3, MG_NOEUD *noeud4, MG_NOEUD *noeud5)
Definition: rec_squelette_opt.cpp:1192
REC_SQUELETTE_OPT::calcul_branches
void calcul_branches(MG_MAILLAGE *mai_peau, double param_dist=1.3, double angle_seuil=178., double lambda=0.8)
Definition: rec_squelette_opt.cpp:553
REC_SQUELETTE_OPT::prolongation_guide
void prolongation_guide(std::vector< MG_NOEUD * > *guide, int num_bran, double eps)
Definition: rec_squelette_opt.cpp:1333
REC_SQUELETTE_OPT::calcul_sections2
void calcul_sections2(MG_MAILLAGE *mai_peau, int NbSecs, int NbPtsInterp)
Definition: rec_squelette_opt.cpp:746
REC_SQUELETTE_OPT::calcul_section
void calcul_section(TPL_MAP_ENTITE< MG_SEGMENT * > *MapSeg, double O[3], double V[3], double eps, std::vector< MG_NOEUD * > *section)
Definition: rec_squelette_opt.cpp:899
REC_SQUELETTE_OPT::getLstJonctions
std::vector< SQ_JONCTION * > getLstJonctions()
Definition: rec_squelette_opt.cpp:1818
REC_SQUELETTE_OPT::point_appartient_volume
int point_appartient_volume(double *xyz, TPL_LISTE_ENTITE< MG_TRIANGLE * > *lsttrifront, int numvol)
Definition: rec_squelette_opt.cpp:129
REC_SQUELETTE_OPT::inter_droite_triangle
int inter_droite_triangle(double *xyz, double *dir, MG_TRIANGLE *tri, double *t)
Definition: rec_squelette_opt.cpp:200
REC_SQUELETTE_OPT::LstBranches
std::vector< SQ_BRANCHE * > LstBranches
Definition: rec_squelette_opt.h:82
mg_export.h
REC_SQUELETTE_OPT::calcul_normales
void calcul_normales(SQ_BRANCHE *Bran)
Definition: rec_squelette_opt.cpp:538
MG_NOEUD
Definition: mg_noeud.h:41
REC_SQUELETTE_OPT::REC_SQUELETTE_OPT
REC_SQUELETTE_OPT()
Definition: rec_squelette_opt.cpp:26
V
void V(MCAA *mcaa)
Definition: CAD4FE_MCAA.cpp:1794
tpl_grille.h
REC_SQUELETTE_OPT::affichage_sections_jonc
void affichage_sections_jonc(MG_MAILLAGE *mai_sq)
Definition: rec_squelette_opt.cpp:1629
REC_SQUELETTE_OPT
Definition: rec_squelette_opt.h:32
REC_SQUELETTE_OPT::proj_noeud_triangulation
MG_NOEUD * proj_noeud_triangulation(SQ_NOEUD *no_sq, TPL_MAP_ENTITE< MG_TRIANGLE * > *MapTri)
Definition: rec_squelette_opt.cpp:1150
REC_SQUELETTE_OPT::inter_segment_segment1
int inter_segment_segment1(MG_NOEUD *A, MG_NOEUD *B, MG_NOEUD *C, MG_NOEUD *D)
Definition: rec_squelette_opt.cpp:1259
REC_SQUELETTE_OPT::affichage_sections
void affichage_sections(MG_MAILLAGE *mai_sq)
Definition: rec_squelette_opt.cpp:1013
REC_SQUELETTE_OPT::liaison_squelette_interface_nondesign
void liaison_squelette_interface_nondesign(MG_MAILLAGE *mai_sq, MG_MAILLAGE *mai_peau)
Definition: rec_squelette_opt.cpp:258
REC_SQUELETTE_OPT::determine_dir_guide
void determine_dir_guide(int i)
Definition: rec_squelette_opt.cpp:1173
REC_SQUELETTE_OPT::milieu_branche
SQ_NOEUD * milieu_branche(std::vector< SQ_NOEUD * > *branche)
Definition: rec_squelette_opt.cpp:841
REC_SQUELETTE_OPT::LstJonctions
std::vector< SQ_JONCTION * > LstJonctions
Definition: rec_squelette_opt.h:83
REC_SQUELETTE_OPT::affichage_voisinage_tri
void affichage_voisinage_tri(TPL_MAP_ENTITE< MG_TRIANGLE * > *MapTri)
Definition: rec_squelette_opt.cpp:1774
ot_algorithme_geometrique.h
REC_SQUELETTE_OPT::creation_LstJonctions
void creation_LstJonctions(MG_MAILLAGE *mai_sq)
Definition: rec_squelette_opt.cpp:1395
REC_SQUELETTE_OPT::cree_liste_frontiere
void cree_liste_frontiere(MG_MAILLAGE *mai, TPL_LISTE_ENTITE< MG_TRIANGLE * > *lsttrifront)
Definition: rec_squelette_opt.cpp:101
MG_MAILLAGE
Definition: mg_maillage.h:62
TPL_LISTE_ENTITE< MG_TRIANGLE * >
REC_SQUELETTE_OPT::rayon_max
double rayon_max(std::vector< MG_NOEUD * > *section, SQ_NOEUD *no_sq)
Definition: rec_squelette_opt.cpp:886
REC_SQUELETTE_OPT::~REC_SQUELETTE_OPT
~REC_SQUELETTE_OPT()
Definition: rec_squelette_opt.cpp:32
REC_SQUELETTE_OPT::determine_dirs_interf
void determine_dirs_interf(SQ_INTERFACE *interf, double DistMax)
Definition: rec_squelette_opt.cpp:1702
REC_SQUELETTE_OPT::lissage_branche
void lissage_branche(SQ_BRANCHE *Bran, double angle_seuil, double lambda)
Definition: rec_squelette_opt.cpp:708
REC_SQUELETTE_OPT::rayon_moyen
double rayon_moyen(std::vector< MG_NOEUD * > *section, SQ_NOEUD *no_sq)
Definition: rec_squelette_opt.cpp:872
REC_SQUELETTE_OPT::recherche_contour
void recherche_contour(std::vector< MG_NOEUD * > *Contour, TPL_LISTE_ENTITE< MG_NOEUD * > *LstNoInter)
Definition: rec_squelette_opt.cpp:398