MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
CAD4FE_PolySurface.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 //####// CAD4FE_PolySurface.h
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:55 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 
23 #ifndef CAD4FE_PolySurfaceH
24 #define CAD4FE_PolySurfaceH
25 
26 #include "mg_geometrie.h"
27 #include "mg_face.h"
28 
29 #include <map>
30 #include <ostream>
31 #include <string>
32 #include <set>
33 
34 
35 
36 
37 class OT_VECTEUR_3D;
38 
39 namespace CAD4FE {
40 
41 class MCVertex;
42 
43 class PolySurface : public MG_SURFACE
44 {
45 public:
48  void InsertSurface(MG_FACE *);
49  void Merge( PolySurface &);
50  bool Contains(MG_FACE * __refFace);
51  bool Contains(MG_ARETE * __refEdge);
52  MG_FACE * GetRefFace(unsigned int __index);
53  std::set<MG_FACE*> & GetRefFaces();
54  unsigned int GetRefFaceCount() ;
55 
56  virtual void evaluer(double *uv,double *xyz);
57  virtual void deriver(double *uv,double *xyzdu, double *xyzdv);
58  virtual void deriver_seconde(double *uv,double* xyzduu,double* xyzduv,double* xyzdvv,double *xyz = NULL , double *xyzdu = NULL , double *xyzdv =NULL);
59  virtual void inverser(double *uv,double *xyz,double precision=1e-6);
60  virtual bool est_sur_surface(double *xyz,double precision=1e-6);
61  virtual int est_periodique_u(void);
62  virtual int est_periodique_v(void);
63  virtual double get_periode_u(void);
64  virtual double get_periode_v(void);
65  virtual void enregistrer(std::ostream& o,double version);
67  void calcul_normale_unitaire(MG_SOMMET *v, double __n[3], int * __nbRefFace);
68  void calcul_normale_unitaire(MCVertex * __mcVertex, double __n[3], int *__nbRefFace);
69  void calcul_normale_unitaire(const std::map<MG_FACE *, OT_VECTEUR_3D > & __tabRefFaceUV, double __n[3], int *__nbRefFace);
70  virtual void get_param_NURBS(int& indx_premier_ptctr,TPL_LISTE_ENTITE<double> &param);
71  virtual void get_liste_pole(std::vector<double> *liste_pole,double eps);
72  virtual void get_echantillonnage(int numechantillonpartri, std::vector<double> &tab, double eps,double angle_dev) {};
73 
74 private:
75  // set of adjacent faces that define this PolySurface
76  std::set<MG_FACE*> _lst_ref_faces;
77 };
78 }
79 
80 #endif
std::set< MG_FACE * > & GetRefFaces()
virtual bool est_sur_surface(double *xyz, double precision=1e-6)
unsigned int GetRefFaceCount()
virtual void get_liste_pole(std::vector< double > *liste_pole, double eps)
void calcul_normale_unitaire(MG_SOMMET *v, double __n[3], int *__nbRefFace)
virtual void get_param_NURBS(int &indx_premier_ptctr, TPL_LISTE_ENTITE< double > &param)
virtual int est_periodique_u(void)
virtual int est_periodique_v(void)
void InsertSurface(MG_FACE *)
virtual int get_type_geometrique(TPL_LISTE_ENTITE< double > &param)
virtual double get_periode_u(void)
virtual void inverser(double *uv, double *xyz, double precision=1e-6)
bool Contains(MG_FACE *__refFace)
MG_FACE * GetRefFace(unsigned int __index)
virtual void evaluer(double *uv, double *xyz)
virtual void enregistrer(std::ostream &o, double version)
std::set< MG_FACE * > _lst_ref_faces
virtual double get_periode_v(void)
virtual void get_echantillonnage(int numechantillonpartri, std::vector< double > &tab, double eps, double angle_dev)
virtual void deriver_seconde(double *uv, double *xyzduu, double *xyzduv, double *xyzdvv, double *xyz=NULL, double *xyzdu=NULL, double *xyzdv=NULL)
void Merge(PolySurface &)
virtual void deriver(double *uv, double *xyzdu, double *xyzdv)