MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
stbsplines.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 //####// stbsplines.h
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:53:59 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 #ifndef STBSPLINESH
23 #define STBSPLINESH
24 
25 
26 
27 
28 #include "st_surface.h"
29 #include "st_point.h"
30 #include "ot_mathematique.h"
31 #include "st_ident.h"
32 #include <vector> // etait <vector.h>
33 
35 {
36 public :
37  ST_B_SPLINE_SURF(long LigneCourante,std::string idori,int bs_degre_u,int bs_degre_v,std::vector<int> bs_indexptsctr,std::vector<int> bs_knots_multiplicities_u,std::vector<int> bs_knots_multiplicities_v,std::vector<double> bs_knots_u,std::vector<double> bs_knots_v);
38  ST_B_SPLINE_SURF(int bs_degre_u,int bs_degre_v,std::vector<double> &bs_knots_u,std::vector<double> &bs_knots_v,std::vector<double> &bs_ptsctr,std::vector<double> &bs_poids,int sense);
40 
41 
42  virtual void evaluer(double *uv,double *xyz);
43  virtual void deriver(double *uv,double *xyzdu, double *xyzdv);
44  virtual void deriver_seconde(double *uv,double* xyzduu,double* xyzduv,double* xyzdvv,double *xyz = NULL , double *xyzdu = NULL , double *xyzdv =NULL);
45  virtual void inverser(double *uv,double *xyz,double precision=1e-6);
46  virtual int inverser2(double *uv,double *xyz,int num_test, double precision);
47  virtual int est_periodique_u(void);
48  virtual int est_periodique_v(void);
49  virtual double get_periode_u(void);
50  virtual double get_periode_v(void);
51 
52  virtual double get_umin(void);
53  virtual double get_umax(void);
54  virtual double get_vmin(void);
55  virtual double get_vmax(void);
56  virtual void initialiser(class ST_GESTIONNAIRE* gest);
57 
59  virtual void est_util(class ST_GESTIONNAIRE* gest);
60  virtual void get_param_NURBS(int& indx_premier_ptctr,TPL_LISTE_ENTITE<double> &param);
61  virtual void set_periodique_u(int);
62  virtual void set_periodique_v(int);
63 
64 private:
65 
66  virtual int get_intervalle(int nb_point, int degre, double t, std::vector<double> &knots);
67  virtual void get_valeur_fonction(int inter, double t, int degre, std::vector<double> &knots,double *grand_n);
68  virtual void deriver_fonction(int inter,double t,int degre,int dd,std::vector<double> &knots,double *f_deriver);
69  virtual void deriver_bs_kieme(int nb_ptsctr_u,int degre_u,std::vector<double> &knots_u,int nb_ptsctr_v,int degre_v,std::vector<double> &knots_v,double u,double v,int d,OT_VECTEUR_4D *skl);
70  virtual void deriver_kieme(double *uv,int d,OT_VECTEUR_4D *skl);
71  virtual void binomialCoef(double * Bin, int degre);
72 
74  double periode_u;
76  double periode_v;
77  int degre_u;
78  int degre_v;
81  int nb_point;
82  std::vector<int> indexptsctr;
83  std::vector<double> knots_u;
84  std::vector<double> knots_v;
85  std::vector<OT_VECTEUR_4D> ptsctr;
86  int sens;
87  double umin,umax;
88  double vmin,vmax;
89 };
90 
91 
92 #endif
grand_n
#define grand_n(i, j)
ST_B_SPLINE_SURF::deriver_fonction
virtual void deriver_fonction(int inter, double t, int degre, int dd, std::vector< double > &knots, double *f_deriver)
Definition: stbsplines.cpp:236
ST_GESTIONNAIRE
Definition: st_gestionnaire.h:55
ST_B_SPLINE_SURF::get_periode_v
virtual double get_periode_v(void)
Definition: stbsplines.cpp:642
ST_B_SPLINE_SURF::get_umax
virtual double get_umax(void)
Definition: stbsplines.cpp:650
Bin
#define Bin(i, j)
ST_B_SPLINE_SURF::deriver_kieme
virtual void deriver_kieme(double *uv, int d, OT_VECTEUR_4D *skl)
Definition: stbsplines.cpp:392
ST_B_SPLINE_SURF::set_periodique_u
virtual void set_periodique_u(int)
Definition: stbsplines.cpp:128
f_deriver
#define f_deriver(i, j)
ST_B_SPLINE_SURF::vmin
double vmin
Definition: stbsplines.h:88
ST_B_SPLINE_SURF::get_type_geometrique
virtual int get_type_geometrique(TPL_LISTE_ENTITE< double > &param)
Definition: stbsplines.cpp:663
ST_B_SPLINE_SURF::deriver
virtual void deriver(double *uv, double *xyzdu, double *xyzdv)
Definition: stbsplines.cpp:435
ST_B_SPLINE_SURF::est_periodique_v
virtual int est_periodique_v(void)
Definition: stbsplines.cpp:634
st_surface.h
ST_B_SPLINE_SURF::knots_u
std::vector< double > knots_u
Definition: stbsplines.h:83
ST_B_SPLINE_SURF::nb_point
int nb_point
Definition: stbsplines.h:81
ST_B_SPLINE_SURF
Definition: stbsplines.h:34
skl
#define skl(i, j)
ST_B_SPLINE_SURF::inverser2
virtual int inverser2(double *uv, double *xyz, int num_test, double precision)
Definition: stbsplines.cpp:515
ST_B_SPLINE_SURF::ST_B_SPLINE_SURF
ST_B_SPLINE_SURF(long LigneCourante, std::string idori, int bs_degre_u, int bs_degre_v, std::vector< int > bs_indexptsctr, std::vector< int > bs_knots_multiplicities_u, std::vector< int > bs_knots_multiplicities_v, std::vector< double > bs_knots_u, std::vector< double > bs_knots_v)
Definition: stbsplines.cpp:37
ST_B_SPLINE_SURF::nb_ptsctr_v
int nb_ptsctr_v
Definition: stbsplines.h:80
ST_B_SPLINE_SURF::binomialCoef
virtual void binomialCoef(double *Bin, int degre)
Definition: stbsplines.cpp:317
ST_B_SPLINE_SURF::ptsctr
std::vector< OT_VECTEUR_4D > ptsctr
Definition: stbsplines.h:85
ST_B_SPLINE_SURF::get_intervalle
virtual int get_intervalle(int nb_point, int degre, double t, std::vector< double > &knots)
Definition: stbsplines.cpp:148
ST_B_SPLINE_SURF::umax
double umax
Definition: stbsplines.h:87
ST_B_SPLINE_SURF::get_vmax
virtual double get_vmax(void)
Definition: stbsplines.cpp:658
st_ident.h
ST_B_SPLINE_SURF::deriver_bs_kieme
virtual void deriver_bs_kieme(int nb_ptsctr_u, int degre_u, std::vector< double > &knots_u, int nb_ptsctr_v, int degre_v, std::vector< double > &knots_v, double u, double v, int d, OT_VECTEUR_4D *skl)
Definition: stbsplines.cpp:334
ST_B_SPLINE_SURF::get_param_NURBS
virtual void get_param_NURBS(int &indx_premier_ptctr, TPL_LISTE_ENTITE< double > &param)
Definition: stbsplines.cpp:753
ST_B_SPLINE_SURF::get_umin
virtual double get_umin(void)
Definition: stbsplines.cpp:646
ST_B_SPLINE_SURF::set_periodique_v
virtual void set_periodique_v(int)
Definition: stbsplines.cpp:138
ST_B_SPLINE_SURF::sens
int sens
Definition: stbsplines.h:86
ST_B_SPLINE_SURF::periode_v
double periode_v
Definition: stbsplines.h:76
ST_B_SPLINE_SURF::degre_v
int degre_v
Definition: stbsplines.h:78
ST_B_SPLINE_SURF::periodique_u
int periodique_u
Definition: stbsplines.h:73
ot_mathematique.h
ST_B_SPLINE_SURF::est_util
virtual void est_util(class ST_GESTIONNAIRE *gest)
Definition: stbsplines.cpp:744
ST_B_SPLINE_SURF::get_vmin
virtual double get_vmin(void)
Definition: stbsplines.cpp:654
ST_SURFACE
Definition: st_surface.h:29
ST_B_SPLINE_SURF::nb_ptsctr_u
int nb_ptsctr_u
Definition: stbsplines.h:79
OT_VECTEUR_4D
Definition: ot_mathematique.h:215
ST_B_SPLINE_SURF::~ST_B_SPLINE_SURF
~ST_B_SPLINE_SURF()
Definition: stbsplines.cpp:124
ST_B_SPLINE_SURF::inverser
virtual void inverser(double *uv, double *xyz, double precision=1e-6)
Definition: stbsplines.cpp:502
ST_B_SPLINE_SURF::get_valeur_fonction
virtual void get_valeur_fonction(int inter, double t, int degre, std::vector< double > &knots, double *grand_n)
Definition: stbsplines.cpp:171
ST_B_SPLINE_SURF::deriver_seconde
virtual void deriver_seconde(double *uv, double *xyzduu, double *xyzduv, double *xyzdvv, double *xyz=NULL, double *xyzdu=NULL, double *xyzdv=NULL)
Definition: stbsplines.cpp:454
ST_B_SPLINE_SURF::knots_v
std::vector< double > knots_v
Definition: stbsplines.h:84
ST_B_SPLINE_SURF::umin
double umin
Definition: stbsplines.h:87
ST_B_SPLINE_SURF::degre_u
int degre_u
Definition: stbsplines.h:77
ST_B_SPLINE_SURF::periode_u
double periode_u
Definition: stbsplines.h:74
ST_B_SPLINE_SURF::periodique_v
int periodique_v
Definition: stbsplines.h:75
ST_B_SPLINE_SURF::get_periode_u
virtual double get_periode_u(void)
Definition: stbsplines.cpp:638
TPL_LISTE_ENTITE< double >
ST_B_SPLINE_SURF::vmax
double vmax
Definition: stbsplines.h:88
st_point.h
ST_B_SPLINE_SURF::evaluer
virtual void evaluer(double *uv, double *xyz)
Definition: stbsplines.cpp:195
ST_B_SPLINE_SURF::est_periodique_u
virtual int est_periodique_u(void)
Definition: stbsplines.cpp:630
ST_B_SPLINE_SURF::indexptsctr
std::vector< int > indexptsctr
Definition: stbsplines.h:82
ST_B_SPLINE_SURF::initialiser
virtual void initialiser(class ST_GESTIONNAIRE *gest)
Definition: stbsplines.cpp:689