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 |
|
|
//####// mg_cg.h |
15 |
|
|
//####// |
16 |
|
|
//####//------------------------------------------------------------ |
17 |
|
|
//####//------------------------------------------------------------ |
18 |
|
|
//####// COPYRIGHT 2000-2024 |
19 |
|
|
//####// jeu 13 jun 2024 11:58:53 EDT |
20 |
|
|
//####//------------------------------------------------------------ |
21 |
|
|
//####//------------------------------------------------------------ |
22 |
couturad |
907 |
#ifndef _MG_CG_ |
23 |
|
|
#define _MG_CG_ |
24 |
|
|
|
25 |
|
|
|
26 |
francois |
1158 |
|
27 |
couturad |
907 |
#include <map> |
28 |
|
|
#include <vector> |
29 |
ghazal |
1092 |
#include <math.h> |
30 |
francois |
1158 |
#include <string> |
31 |
couturad |
907 |
|
32 |
|
|
class MG_GEOMETRIE; |
33 |
|
|
class MG_SOUS_GEOMETRIE; |
34 |
|
|
class MG_GESTIONNAIRE; |
35 |
|
|
|
36 |
|
|
class MG_CG_FORME; |
37 |
|
|
class MG_CG_FORME_ARETE; |
38 |
|
|
class MG_CG_FORME_ARETE_DROITE; |
39 |
|
|
|
40 |
|
|
class MG_CG_FORME_VOLUME; |
41 |
|
|
class MG_CG_FORME_VOLUME_BOITE; |
42 |
|
|
class MG_CG_FORME_VOLUME_SPHERE; |
43 |
|
|
class MG_CG_FORME_VOLUME_ELLIPSOIDE; |
44 |
|
|
class MG_CG_FORME_VOLUME_CYLINDRE; |
45 |
|
|
class MG_CG_FORME_VOLUME_CONE; |
46 |
|
|
class MG_CG_FORME_VOLUME_TORE; |
47 |
|
|
|
48 |
|
|
|
49 |
|
|
class MG_CG_FORME_MULTIPLE; |
50 |
|
|
class MG_CG_FORME_MULTI_VOLUME; |
51 |
|
|
|
52 |
|
|
class MG_CG_OPERATEUR; |
53 |
|
|
class MG_CG_OP_BOOL_UNION; |
54 |
|
|
class MG_CG_OP_BOOL_DIFFERENCE; |
55 |
|
|
class MG_CG_OP_BOOL_INTERSECTION; |
56 |
|
|
class MG_CG_OP_BOOL_FRAGMENT; |
57 |
|
|
class MG_CG_OP_INCLUSION_MATRICE; |
58 |
|
|
class MG_CG_OP_TRANSF_ROTATION; |
59 |
|
|
class MG_CG_OP_TRANSF_TRANSLATION; |
60 |
|
|
class MG_CG_OP_TRANSF_ECHELLE; |
61 |
couturad |
951 |
class MG_CG_OP_TRANSF_DECALLAGE; |
62 |
couturad |
907 |
|
63 |
|
|
class MG_CG_MODELE; |
64 |
|
|
class MG_CG_ASSEMBLAGE; |
65 |
couturad |
926 |
class MG_CG_GROUPE_FORME; |
66 |
couturad |
907 |
|
67 |
couturad |
926 |
class MG_CG_INFO_DOUBLE; |
68 |
|
|
class MG_CG_INFO_VCT_DOUBLE; |
69 |
|
|
class MG_CG_INFO_STRING; |
70 |
|
|
|
71 |
couturad |
907 |
class MG_ARETE; |
72 |
|
|
class MG_VOLUME; |
73 |
|
|
|
74 |
|
|
class MG_ELEMENT_TOPOLOGIQUE; |
75 |
|
|
class MG_ELEMENT_COTOPOLOGIQUE; |
76 |
|
|
|
77 |
couturad |
926 |
class MG_CONSTRUCTION_GEOMETRIQUE; |
78 |
|
|
|
79 |
francois |
1158 |
class MG_CG |
80 |
couturad |
907 |
{ |
81 |
|
|
public: |
82 |
|
|
//creer_MG_CG_MODELE |
83 |
|
|
static MG_CG_MODELE* creer_MG_CG_MODELE(MG_GESTIONNAIRE* mg_gestionnaire,std::string nom_mgcg_modele,double unite=1.0,double eps=1e-6); |
84 |
|
|
static MG_CG_MODELE* creer_MG_CG_MODELE(MG_GESTIONNAIRE* mg_gestionnaire,std::string nom_mgcg_modele,MG_GEOMETRIE* mg_geometrie); |
85 |
|
|
static MG_CG_MODELE* creer_MG_CG_MODELE(MG_GESTIONNAIRE* mg_gestionnaire,std::string nom_mgcg_modele,MG_GEOMETRIE* mg_geometrie,unsigned long num); |
86 |
|
|
|
87 |
|
|
static MG_CG_ASSEMBLAGE* creer_MG_CG_ASSEMBLAGE(MG_CG_MODELE* mgcg_modele,std::string nom_mgcg_assemblage); |
88 |
|
|
static MG_CG_ASSEMBLAGE* creer_MG_CG_ASSEMBLAGE(MG_CG_MODELE* mgcg_modele,unsigned long num,std::string nom_mgcg_assemblage,MG_SOUS_GEOMETRIE *mg_sous_geometrie); |
89 |
|
|
|
90 |
couturad |
926 |
static MG_CG_GROUPE_FORME* creer_MG_CG_GROUPE_FORME(MG_CG_MODELE* mgcg_modele,std::string nom); |
91 |
|
|
static MG_CG_GROUPE_FORME* creer_MG_CG_GROUPE_FORME(MG_CG_MODELE* mgcg_modele,unsigned long num,std::string nom); |
92 |
|
|
|
93 |
|
|
static MG_CG_INFO_STRING* creer_MG_CG_INFO_STRING(MG_CONSTRUCTION_GEOMETRIQUE* mg_construction_geometrique,std::string identifiant,std::string valeur); |
94 |
|
|
static MG_CG_INFO_STRING* creer_MG_CG_INFO_STRING(MG_CONSTRUCTION_GEOMETRIQUE* mg_construction_geometrique,long num,std::string identifiant,std::string valeur); |
95 |
|
|
static MG_CG_INFO_DOUBLE* creer_MG_CG_INFO_DOUBLE(MG_CONSTRUCTION_GEOMETRIQUE* mg_construction_geometrique,std::string identifiant,double valeur); |
96 |
|
|
static MG_CG_INFO_DOUBLE* creer_MG_CG_INFO_DOUBLE(MG_CONSTRUCTION_GEOMETRIQUE* mg_construction_geometrique,long num,std::string identifiant,double valeur); |
97 |
|
|
static MG_CG_INFO_VCT_DOUBLE* creer_MG_CG_INFO_VCT_DOUBLE(MG_CONSTRUCTION_GEOMETRIQUE* mg_construction_geometrique,std::string identifiant,std::vector<double> &valeur); |
98 |
|
|
static MG_CG_INFO_VCT_DOUBLE* creer_MG_CG_INFO_VCT_DOUBLE(MG_CONSTRUCTION_GEOMETRIQUE* mg_construction_geometrique,long num,std::string identifiant,std::vector<double> &valeur); |
99 |
|
|
static MG_CG_INFO_VCT_DOUBLE* creer_MG_CG_INFO_VCT_DOUBLE(MG_CONSTRUCTION_GEOMETRIQUE* mg_construction_geometrique,std::string identifiant,long nb,double* tab); |
100 |
|
|
static MG_CG_INFO_VCT_DOUBLE* creer_MG_CG_INFO_VCT_DOUBLE(MG_CONSTRUCTION_GEOMETRIQUE* mg_construction_geometrique,long num,std::string identifiant,long nb,double* tab); |
101 |
|
|
|
102 |
couturad |
907 |
//creer_MG_CG_FORME_ARETE |
103 |
couturad |
911 |
static MG_CG_FORME_ARETE* creer_MG_CG_FORME_ARETE(MG_CG_MODELE* mgcg_modele,int provenance,MG_ARETE* mg_arete); |
104 |
|
|
static MG_CG_FORME_ARETE* creer_MG_CG_FORME_ARETE(MG_CG_MODELE* mgcg_modele,int provenance,int etat, unsigned long num,MG_ARETE* mg_arete); |
105 |
|
|
static MG_CG_FORME_ARETE_DROITE* creer_MG_CG_FORME_ARETE_DROITE(MG_CG_MODELE* mgcg_modele,double x1,double y1,double z1,double x2,double y2,double z2); |
106 |
|
|
static MG_CG_FORME_ARETE_DROITE* creer_MG_CG_FORME_ARETE_DROITE(MG_CG_MODELE* mgcg_modele,int etat,unsigned long num,MG_ARETE* mg_arete,double x1,double y1,double z1,double x2,double y2,double z2); |
107 |
couturad |
907 |
|
108 |
|
|
//creer_MG_CG_FORME_VOLUME |
109 |
couturad |
911 |
static MG_CG_FORME_VOLUME* creer_MG_CG_FORME_VOLUME(MG_CG_MODELE* mgcg_modele,int provenance,MG_VOLUME* mg_volume); |
110 |
|
|
static MG_CG_FORME_VOLUME* creer_MG_CG_FORME_VOLUME(MG_CG_MODELE* mgcg_modele,int provenance,int etat, unsigned long num,MG_VOLUME* mg_volume); |
111 |
|
|
static MG_CG_FORME_VOLUME_BOITE* creer_MG_CG_FORME_VOLUME_BOITE(MG_CG_MODELE* mgcg_modele,double x1,double y1,double z1,double x2,double y2,double z2); |
112 |
|
|
static MG_CG_FORME_VOLUME_BOITE* creer_MG_CG_FORME_VOLUME_BOITE(MG_CG_MODELE* mgcg_modele,int etat,unsigned long num,MG_VOLUME* mg_volume,double x1,double y1,double z1,double x2,double y2,double z2); |
113 |
|
|
static MG_CG_FORME_VOLUME_SPHERE* creer_MG_CG_FORME_VOLUME_SPHERE(MG_CG_MODELE* mgcg_modele,double centre_x,double centre_y,double centre_z,double rayon); |
114 |
|
|
static MG_CG_FORME_VOLUME_SPHERE* creer_MG_CG_FORME_VOLUME_SPHERE(MG_CG_MODELE* mgcg_modele,int etat,unsigned long num,MG_VOLUME* mg_volume,double centre_x,double centre_y,double centre_z,double rayon); |
115 |
|
|
static MG_CG_FORME_VOLUME_ELLIPSOIDE* creer_MG_CG_FORME_VOLUME_ELLIPSOIDE(MG_CG_MODELE* mgcg_modele,double centre_x,double centre_y,double centre_z,double direction_x,double direction_y,double direction_z,double rayon_majeur, double rayon_mineur); |
116 |
|
|
static MG_CG_FORME_VOLUME_ELLIPSOIDE* creer_MG_CG_FORME_VOLUME_ELLIPSOIDE(MG_CG_MODELE* mgcg_modele,int etat,unsigned long num,MG_VOLUME* mg_volume,double centre_x,double centre_y,double centre_z,double direction_x,double direction_y,double direction_z,double rayon_majeur, double rayon_mineur); |
117 |
|
|
static MG_CG_FORME_VOLUME_CYLINDRE* creer_MG_CG_FORME_VOLUME_CYLINDRE(MG_CG_MODELE* mgcg_modele,double extremite_x,double extremite_y,double extremite_z,double direction_x,double direction_y,double direction_z,double rayon,double longueur); |
118 |
|
|
static MG_CG_FORME_VOLUME_CYLINDRE* creer_MG_CG_FORME_VOLUME_CYLINDRE(MG_CG_MODELE* mgcg_modele,int etat,unsigned long num,MG_VOLUME* mg_volume,double extremite_x,double extremite_y,double extremite_z,double direction_x,double direction_y,double direction_z,double rayon,double longueur); |
119 |
|
|
static MG_CG_FORME_VOLUME_CONE* creer_MG_CG_FORME_VOLUME_CONE(MG_CG_MODELE* mgcg_modele,double extremite_x,double extremite_y,double extremite_z,double direction_x,double direction_y,double direction_z,double rayon,double longueur); |
120 |
|
|
static MG_CG_FORME_VOLUME_CONE* creer_MG_CG_FORME_VOLUME_CONE(MG_CG_MODELE* mgcg_modele,int etat,unsigned long num,MG_VOLUME* mg_volume,double extremite_x,double extremite_y,double extremite_z,double direction_x,double direction_y,double direction_z,double rayon,double longueur); |
121 |
ghazal |
1092 |
static MG_CG_FORME_VOLUME_TORE* creer_MG_CG_FORME_VOLUME_TORE(MG_CG_MODELE* mgcg_modele,double centre_x,double centre_y,double centre_z,double direction_x,double direction_y,double direction_z,double rayon_cercle,double rayon_tore,double angle_seg=2*M_PI,double angle_rotation=0.0); |
122 |
|
|
static MG_CG_FORME_VOLUME_TORE* creer_MG_CG_FORME_VOLUME_TORE(MG_CG_MODELE* mgcg_modele,int etat,unsigned long num,MG_VOLUME* mg_volume,double centre_x,double centre_y,double centre_z,double direction_x,double direction_y,double direction_z,double rayon_cercle,double rayon_tore,double angle_seg=2*M_PI,double angle_rotation=0.0); |
123 |
couturad |
907 |
|
124 |
|
|
//creer_MG_CG_FORME_MULTI_VOLUME |
125 |
couturad |
911 |
static MG_CG_FORME_MULTI_VOLUME* creer_MG_CG_FORME_MULTI_VOLUME(MG_CG_MODELE* mgcg_modele,int provenance,std::vector<MG_VOLUME*> &vector_mg_volume); |
126 |
|
|
static MG_CG_FORME_MULTI_VOLUME* creer_MG_CG_FORME_MULTI_VOLUME(MG_CG_MODELE* mgcg_modele,int provenance,int etat, unsigned long num,std::vector<MG_VOLUME*> &vector_mg_volume); |
127 |
couturad |
907 |
|
128 |
|
|
//creer_MG_CG_FORME_MULTIPLE |
129 |
couturad |
911 |
static MG_CG_FORME_MULTIPLE* creer_MG_CG_FORME_MULTIPLE(MG_CG_MODELE* mgcg_modele,int provenance,std::vector<MG_ELEMENT_TOPOLOGIQUE*> &vector_mg_element_topologique,std::vector<MG_ELEMENT_COTOPOLOGIQUE*> &vector_mg_element_cotopologique); |
130 |
|
|
static MG_CG_FORME_MULTIPLE* creer_MG_CG_FORME_MULTIPLE(MG_CG_MODELE* mgcg_modele,int provenance,int etat,unsigned long num,std::vector<MG_ELEMENT_TOPOLOGIQUE*> &vector_mg_element_topologique,std::vector<MG_ELEMENT_COTOPOLOGIQUE*> &vector_mg_element_cotopologique); |
131 |
couturad |
907 |
|
132 |
|
|
//creer_MG_CG_OPERATEUR |
133 |
couturad |
911 |
static MG_CG_OP_BOOL_UNION* creer_MG_CG_OP_BOOL_UNION(MG_CG_MODELE* mgcg_modele,int semantique,MG_CG_FORME* mgcg_forme_entree_1,MG_CG_FORME* mgcg_forme_entree_2); |
134 |
|
|
static MG_CG_OP_BOOL_UNION* creer_MG_CG_OP_BOOL_UNION(MG_CG_MODELE* mgcg_modele,int semantique,int etat,unsigned long num,MG_CG_FORME* mgcg_forme_entree_1,MG_CG_FORME* mgcg_forme_entree_2,long id_mgcg_forme_sortie); |
135 |
|
|
static MG_CG_OP_BOOL_DIFFERENCE* creer_MG_CG_OP_BOOL_DIFFERENCE(MG_CG_MODELE* mgcg_modele,int semantique,MG_CG_FORME* mgcg_forme_entree_1,MG_CG_FORME* mgcg_forme_entree_2); |
136 |
|
|
static MG_CG_OP_BOOL_DIFFERENCE* creer_MG_CG_OP_BOOL_DIFFERENCE(MG_CG_MODELE* mgcg_modele,int semantique,int etat,unsigned long num,MG_CG_FORME* mgcg_forme_entree_1,MG_CG_FORME* mgcg_forme_entree_2,long id_mgcg_forme_sortie); |
137 |
|
|
static MG_CG_OP_BOOL_INTERSECTION* creer_MG_CG_OP_BOOL_INTERSECTION(MG_CG_MODELE* mgcg_modele,int semantique,MG_CG_FORME* mgcg_forme_entree_1,MG_CG_FORME* mgcg_forme_entree_2); |
138 |
|
|
static MG_CG_OP_BOOL_INTERSECTION* creer_MG_CG_OP_BOOL_INTERSECTION(MG_CG_MODELE* mgcg_modele,int semantique,int etat,unsigned long num,MG_CG_FORME* mgcg_forme_entree_1,MG_CG_FORME* mgcg_forme_entree_2,long id_mgcg_forme_sortie); |
139 |
|
|
static MG_CG_OP_BOOL_FRAGMENT* creer_MG_CG_OP_BOOL_FRAGMENT(MG_CG_MODELE* mgcg_modele,int semantique,MG_CG_FORME* mgcg_forme_entree_1,MG_CG_FORME* mgcg_forme_entree_2); |
140 |
|
|
static MG_CG_OP_BOOL_FRAGMENT* creer_MG_CG_OP_BOOL_FRAGMENT(MG_CG_MODELE* mgcg_modele,int semantique,int etat,unsigned long num,MG_CG_FORME* mgcg_forme_entree_1,MG_CG_FORME* mgcg_forme_entree_2,long id_mgcg_forme_sortie); |
141 |
|
|
static MG_CG_OP_INCLUSION_MATRICE* creer_MG_CG_OP_INCLUSION_MATRICE(MG_CG_MODELE* mgcg_modele,int semantique,MG_CG_FORME* mgcg_forme_inclusion_entree,MG_CG_FORME* mgcg_forme_matrice_entree); |
142 |
|
|
static MG_CG_OP_INCLUSION_MATRICE* creer_MG_CG_OP_INCLUSION_MATRICE(MG_CG_MODELE* mgcg_modele,int semantique,int etat,unsigned long num,MG_CG_FORME* mgcg_forme_inclusion_entree,MG_CG_FORME* mgcg_forme_matrice_entree,long id_mgcg_forme_inclusion_sortie,long id_mgcg_forme_matrice_sortie); |
143 |
|
|
static MG_CG_OP_TRANSF_ROTATION* creer_MG_CG_OP_TRANSF_ROTATION(MG_CG_MODELE* mgcg_modele,int semantique,MG_CG_FORME* mgcg_forme_entree); |
144 |
|
|
static MG_CG_OP_TRANSF_ROTATION* creer_MG_CG_OP_TRANSF_ROTATION(MG_CG_MODELE* mgcg_modele,int semantique,int etat,unsigned long num,MG_CG_FORME* mgcg_forme_entree,long id_mgcg_forme_sortie); |
145 |
|
|
static MG_CG_OP_TRANSF_TRANSLATION* creer_MG_CG_OP_TRANSF_TRANSLATION(MG_CG_MODELE* mgcg_modele,int semantique,MG_CG_FORME* mgcg_forme_entree); |
146 |
|
|
static MG_CG_OP_TRANSF_TRANSLATION* creer_MG_CG_OP_TRANSF_TRANSLATION(MG_CG_MODELE* mgcg_modele,int semantique,int etat,unsigned long num,MG_CG_FORME* mgcg_forme_entree,long id_mgcg_forme_sortie); |
147 |
|
|
static MG_CG_OP_TRANSF_ECHELLE* creer_MG_CG_OP_TRANSF_ECHELLE(MG_CG_MODELE* mgcg_modele,int semantique,MG_CG_FORME* mgcg_forme_entree); |
148 |
|
|
static MG_CG_OP_TRANSF_ECHELLE* creer_MG_CG_OP_TRANSF_ECHELLE(MG_CG_MODELE* mgcg_modele,int semantique,int etat,unsigned long num,MG_CG_FORME* mgcg_forme_entree,long id_mgcg_forme_sortie); |
149 |
couturad |
951 |
static MG_CG_OP_TRANSF_DECALLAGE* creer_MG_CG_OP_TRANSF_DECALLAGE(MG_CG_MODELE* mgcg_modele,int semantique,MG_CG_FORME* mgcg_forme_entree); |
150 |
|
|
static MG_CG_OP_TRANSF_DECALLAGE* creer_MG_CG_OP_TRANSF_DECALLAGE(MG_CG_MODELE* mgcg_modele,int semantique,int etat,unsigned long num,MG_CG_FORME* mgcg_forme_entree,long id_mgcg_forme_sortie); |
151 |
couturad |
907 |
|
152 |
|
|
static int exporter_fichier_brep(char *nom,MG_CG_MODELE* mgcg_modele); |
153 |
|
|
static int exporter_fichier_brep(char *nom,MG_CG_ASSEMBLAGE* mgcg_assemblage); |
154 |
|
|
protected: |
155 |
|
|
|
156 |
|
|
|
157 |
|
|
}; |
158 |
|
|
|
159 |
|
|
|
160 |
couturad |
951 |
#endif |