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 
ACIS_SURFACE::get_liste_pole
virtual void get_liste_pole(std::vector< double > *liste_pole, double eps)
Definition: acis_surface.cpp:139
ACIS_SURFACE
Definition: acis_surface.h:33
ACIS_SURFACE::deriver
virtual void deriver(double *uv, double *xyzdu, double *xyzdv)
Definition: acis_surface.cpp:69
SAT_SURFACE::evaluer
virtual void evaluer(double *uv, double *xyz)=0
SAT_SURFACE::est_periodique_v
virtual int est_periodique_v(void)=0
gestionversion.h
ACIS_SURFACE::get_periode_u
virtual double get_periode_u(void)
Definition: acis_surface.cpp:107
MG_SURFACE
Definition: mg_surface.h:31
SAT_SURFACE::deriver
virtual void deriver(double *uv, double *xyzdu, double *xyzdv)=0
ACIS_SURFACE::evaluer
virtual void evaluer(double *uv, double *xyz)
Definition: acis_surface.cpp:64
MG_IDENTIFICATEUR::get_id
unsigned long get_id()
Definition: mg_identificateur.cpp:53
ACIS_SURFACE::est_periodique_v
virtual int est_periodique_v(void)
Definition: acis_surface.cpp:102
SAT_SURFACE::get_vmin
virtual double get_vmin(void)=0
SAT_SURFACE::inverser
virtual void inverser(double *uv, double *xyz, double precision=1e-6)=0
MG_SURFACE::get_vmax
virtual double get_vmax()
Definition: mg_surface.cpp:71
MG_SURFACE::u_max
double u_max
Definition: mg_surface.h:64
ACIS_SURFACE::est_periodique_u
virtual int est_periodique_u(void)
Definition: acis_surface.cpp:97
SAT_SURFACE::get_param_NURBS
virtual void get_param_NURBS(int &indx_premier_ptctr, TPL_LISTE_ENTITE< double > &param)=0
ACIS_SURFACE::get_param_NURBS
virtual void get_param_NURBS(int &indx_premier_ptctr, TPL_LISTE_ENTITE< double > &param)
Definition: acis_surface.cpp:134
ACIS_SURFACE::est_sur_surface
virtual bool est_sur_surface(double *xyz, double precision=1e-6)
Definition: acis_surface.cpp:91
MG_SURFACE::v_min
double v_min
Definition: mg_surface.h:65
MG_SURFACE::u_min
double u_min
Definition: mg_surface.h:63
ACIS_SURFACE::get_type_geometrique
virtual int get_type_geometrique(TPL_LISTE_ENTITE< double > &param)
Definition: acis_surface.cpp:127
ACIS_SURFACE::get_periode_v
virtual double get_periode_v(void)
Definition: acis_surface.cpp:113
SAT_IDENTIFICATEUR::get_id
unsigned long get_id()
Definition: sat_identificateur.cpp:54
ACIS_SURFACE::surface
SAT_SURFACE * surface
Definition: acis_surface.h:54
SAT_SURFACE
Definition: sat_surface.h:29
MG_SURFACE::v_max
double v_max
Definition: mg_surface.h:66
MG_SURFACE::get_umax
virtual double get_umax()
Definition: mg_surface.cpp:61
SAT_SURFACE::deriver_seconde
virtual void deriver_seconde(double *uv, double *xyzduu, double *xyzduv, double *xyzdvv, double *xyz=NULL, double *xyzdu=NULL, double *xyzdv=NULL)=0
ACIS_SURFACE::enregistrer
virtual void enregistrer(std::ostream &o, double version)
Definition: acis_surface.cpp:120
ACIS_SURFACE::~ACIS_SURFACE
virtual ~ACIS_SURFACE()
Definition: acis_surface.cpp:60
SAT_SURFACE::est_periodique_u
virtual int est_periodique_u(void)=0
SAT_SURFACE::get_periode_u
virtual double get_periode_u(void)=0
ACIS_SURFACE::deriver_seconde
virtual void deriver_seconde(double *uv, double *xyzduu, double *xyzduv, double *xyzdvv, double *xyz=NULL, double *xyzdu=NULL, double *xyzdv=NULL)
Definition: acis_surface.cpp:74
SAT_SURFACE::get_periode_v
virtual double get_periode_v(void)=0
MG_SURFACE::get_vmin
virtual double get_vmin()
Definition: mg_surface.cpp:66
TPL_LISTE_ENTITE< double >
SAT_SURFACE::get_umin
virtual double get_umin(void)=0
acis_surface.h
ACIS_SURFACE::ACIS_SURFACE
ACIS_SURFACE(unsigned long num, SAT_SURFACE *srf)
Definition: acis_surface.cpp:34
SAT_SURFACE::get_umax
virtual double get_umax(void)=0
SAT_SURFACE::get_type_geometrique
virtual int get_type_geometrique(TPL_LISTE_ENTITE< double > &param)=0
ACIS_SURFACE::inverser
virtual void inverser(double *uv, double *xyz, double precision=1e-6)
Definition: acis_surface.cpp:86
MG_SURFACE::get_umin
virtual double get_umin()
Definition: mg_surface.cpp:56
SAT_SURFACE::get_vmax
virtual double get_vmax(void)=0