MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
acis_surface.cpp
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 //####// acis_surface.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:53 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 
23 
24 #include "gestionversion.h"
25 
26 #ifdef BREP_SAT
27 
28 #include "acis_surface.h"
29 
30 
31 
32 
33 
34 ACIS_SURFACE::ACIS_SURFACE(unsigned long num,SAT_SURFACE *srf):MG_SURFACE(num),surface(srf)
35 {
40 }
41 
43 {
48 }
49 
50 ACIS_SURFACE::ACIS_SURFACE(ACIS_SURFACE& mdd):MG_SURFACE(mdd),surface(mdd.surface)
51 {
52  u_min=mdd.get_umin();
53  u_max=mdd.get_umax();
54  v_min=mdd.get_vmin();
55  v_max=mdd.get_vmax();
56 }
57 
58 
59 
61 {
62 }
63 
64 void ACIS_SURFACE::evaluer(double *uv,double *xyz)
65 {
66  surface->evaluer(uv,xyz);
67 }
68 
69 void ACIS_SURFACE::deriver(double *uv,double *xyzdu, double *xyzdv)
70 {
71  surface->deriver(uv,xyzdu,xyzdv);
72 }
73 
74 void ACIS_SURFACE::deriver_seconde(double *uv,double* xyzduu,double* xyzduv,double* xyzdvv,double *xyz, double *xyzdu, double *xyzdv)
75 {
76  double pt[3]= { 0.0 , 0.0 , 0.0 };
77  double du[3] = { 0.0, 0.0, 0.0 };
78  double dv[3] = { 0.0, 0.0, 0.0 };
79  if (xyz==NULL) xyz=pt;
80  if (xyzdu==NULL) xyzdu=du;
81  if (xyzdv==NULL) xyzdv=dv;
82  surface->deriver_seconde( uv, xyzduu,xyzduv,xyzdvv,xyz,xyzdu,xyzdv );
83 
84 }
85 
86 void ACIS_SURFACE::inverser(double* uv,double *xyz,double precision)
87 {
88  surface->inverser(uv,xyz,precision);
89 }
90 
91 bool ACIS_SURFACE::est_sur_surface(double* xyz, double precision)
92 {
93  std::cout <<" *** ACIS_SURFACE::est_sur_surface : FONCTION NON IMPLEMENTE ***" << std::endl;
94  return false;
95 }
96 
98 {
99  return surface->est_periodique_u();
100 }
101 
103 {
104  return surface->est_periodique_v();
105 }
106 
108 {
109  if (surface->est_periodique_u()==0) return 0.;
110  return surface->get_periode_u();
111 }
112 
114 {
115  if (surface->est_periodique_v()==0) return 0.;
116  return surface->get_periode_v();
117 }
118 
119 
120 void ACIS_SURFACE::enregistrer(std::ostream& o,double version)
121 {
122  o << "%" << get_id() << "=SURFACE_SAT("<< surface->get_id()<< ");" << std::endl;
123 }
124 
125 
126 
128 {
129  return surface->get_type_geometrique(param);
130 }
131 
132 
133 
134 void ACIS_SURFACE::get_param_NURBS(int& indx_premier_ptctr,TPL_LISTE_ENTITE<double> &param)
135 {
136  return surface->get_param_NURBS(indx_premier_ptctr,param);
137 }
138 
139 void ACIS_SURFACE::get_liste_pole(std::vector<double> *liste_pole,double eps)
140 {
141 printf("void ACIS_SURFACE::get_liste_pole(std::vector< double > *liste_pole) : Fonction non implementee !\n");
142 }
143 
144 
145 
146 
147 #endif
148 
149 
150 
virtual void inverser(double *uv, double *xyz, double precision=1e-6)
virtual void deriver_seconde(double *uv, double *xyzduu, double *xyzduv, double *xyzdvv, double *xyz=NULL, double *xyzdu=NULL, double *xyzdv=NULL)
virtual int get_type_geometrique(TPL_LISTE_ENTITE< double > &param)
SAT_SURFACE * surface
Definition: acis_surface.h:54
virtual void get_liste_pole(std::vector< double > *liste_pole, double eps)
virtual ~ACIS_SURFACE()
virtual void get_param_NURBS(int &indx_premier_ptctr, TPL_LISTE_ENTITE< double > &param)
virtual bool est_sur_surface(double *xyz, double precision=1e-6)
virtual void evaluer(double *uv, double *xyz)
virtual int est_periodique_v(void)
virtual int est_periodique_u(void)
virtual double get_periode_v(void)
virtual double get_periode_u(void)
ACIS_SURFACE(unsigned long num, SAT_SURFACE *srf)
virtual void enregistrer(std::ostream &o, double version)
virtual void deriver(double *uv, double *xyzdu, double *xyzdv)
unsigned long get_id()
virtual double get_vmax()
Definition: mg_surface.cpp:71
virtual double get_vmin()
Definition: mg_surface.cpp:66
double v_min
Definition: mg_surface.h:65
double u_min
Definition: mg_surface.h:63
double u_max
Definition: mg_surface.h:64
double v_max
Definition: mg_surface.h:66
virtual double get_umax()
Definition: mg_surface.cpp:61
virtual double get_umin()
Definition: mg_surface.cpp:56
unsigned long get_id()
virtual int get_type_geometrique(TPL_LISTE_ENTITE< double > &param)=0
virtual double get_umin(void)=0
virtual void inverser(double *uv, double *xyz, double precision=1e-6)=0
virtual int est_periodique_u(void)=0
virtual double get_vmax(void)=0
virtual double get_vmin(void)=0
virtual double get_periode_u(void)=0
virtual double get_periode_v(void)=0
virtual void get_param_NURBS(int &indx_premier_ptctr, TPL_LISTE_ENTITE< double > &param)=0
virtual void evaluer(double *uv, double *xyz)=0
virtual void deriver(double *uv, double *xyzdu, double *xyzdv)=0
virtual double get_umax(void)=0
virtual void deriver_seconde(double *uv, double *xyzduu, double *xyzduv, double *xyzdvv, double *xyz=NULL, double *xyzdu=NULL, double *xyzdv=NULL)=0
virtual int est_periodique_v(void)=0