MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
stbspline.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 //####// stbspline.h
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:53:59 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 #ifndef _HEADER_STBSPLINE_
23 #define _HEADER_STBSPLINE_
24 
25 
26 
27 
28 #include "st_courbe.h"
29 #include "st_point.h"
30 #include <vector>
31 #include "ot_mathematique.h"
32 
33 
34 
35 class ST_B_SPLINE : public ST_COURBE
36 {
37 public :
38  ST_B_SPLINE(long LigneCourante,std::string idori,int bs_degre,std::vector<int> bs_indexptsctr,std::vector<int> bs_knots_multiplicities,std::vector<double> bs_knots);
39  ST_B_SPLINE(int bs_degre,std::vector<double> &vec_knots,std::vector<double> &vec_point,std::vector<double> &vec_poids);
40  ~ST_B_SPLINE();
41  virtual void evaluer(double t,double *xyz) ;
42  virtual void deriver(double t,double *xyz) ;
43  virtual void deriver_seconde(double t,double *ddxyz,double* dxyz = NULL,double* xyz = NULL);
44  virtual void inverser(double& t,double *xyz,double precision=1e-6) ;
45  virtual int inverser2(double& t,double *xyz,int num_test,double precision=1e-6) ;
46  virtual double get_tmin();
47  virtual double get_tmax();
48  virtual double get_longueur(double t1,double t2,double precis=1e6);
49  virtual int est_periodique(void);
50  virtual double get_periode(void);
51  virtual void initialiser(class ST_GESTIONNAIRE* gest);
53  virtual void est_util(class ST_GESTIONNAIRE* gest);
54 
55 
56 private:
57  virtual int get_intervalle(int nbptsctr, int degre, double t, std::vector<double> &knots);
58 
59  virtual void get_valeur_fonction(int inter, double t, int degre, std::vector<double> &knots, double *grand_n);
60  virtual void deriver_bs_kieme(int nb_point,int degre,std::vector<double> &knots,std::vector<OT_VECTEUR_4D> &ptsctr_x,double t,int d, OT_VECTEUR_4D * CK);
61  virtual void deriver_kieme(double t,int d,double *CK_x,double *CK_y,double *CK_z);
62  virtual void binomialCoef(double * Bin, int degre);
63  virtual void deriver_fonction(int inter,double t,int degre,int dd,std::vector<double> &knots,double *f_deriver);
64  virtual void get_param_NURBS(int& indx_premier_ptctr,TPL_LISTE_ENTITE<double> &param);
65 
67  double periode;
68  int degre;
69  int nb_point;
70  std::vector<int> indexptsctr;
71  std::vector<double> knots;
72  std::vector<OT_VECTEUR_4D> ptsctr;
73 };
74 
75 
76 #endif
grand_n
#define grand_n(i, j)
ST_GESTIONNAIRE
Definition: st_gestionnaire.h:55
ST_B_SPLINE::deriver_bs_kieme
virtual void deriver_bs_kieme(int nb_point, int degre, std::vector< double > &knots, std::vector< OT_VECTEUR_4D > &ptsctr_x, double t, int d, OT_VECTEUR_4D *CK)
Definition: stbspline.cpp:291
ST_B_SPLINE::get_tmax
virtual double get_tmax()
Definition: stbspline.cpp:463
ST_B_SPLINE::periode
double periode
Definition: stbspline.h:67
ST_B_SPLINE::inverser
virtual void inverser(double &t, double *xyz, double precision=1e-6)
Definition: stbspline.cpp:390
ST_B_SPLINE::ST_B_SPLINE
ST_B_SPLINE(long LigneCourante, std::string idori, int bs_degre, std::vector< int > bs_indexptsctr, std::vector< int > bs_knots_multiplicities, std::vector< double > bs_knots)
Definition: stbspline.cpp:35
Bin
#define Bin(i, j)
f_deriver
#define f_deriver(i, j)
ST_B_SPLINE::deriver_kieme
virtual void deriver_kieme(double t, int d, double *CK_x, double *CK_y, double *CK_z)
Definition: stbspline.cpp:312
ST_B_SPLINE::deriver_fonction
virtual void deriver_fonction(int inter, double t, int degre, int dd, std::vector< double > &knots, double *f_deriver)
Definition: stbspline.cpp:206
ST_B_SPLINE::est_periodique
virtual int est_periodique(void)
Definition: stbspline.cpp:484
ST_B_SPLINE
Definition: stbspline.h:35
ST_B_SPLINE::est_util
virtual void est_util(class ST_GESTIONNAIRE *gest)
Definition: stbspline.cpp:558
ST_B_SPLINE::evaluer
virtual void evaluer(double t, double *xyz)
Definition: stbspline.cpp:157
st_courbe.h
ST_B_SPLINE::initialiser
virtual void initialiser(class ST_GESTIONNAIRE *gest)
Definition: stbspline.cpp:517
ST_B_SPLINE::periodique
int periodique
Definition: stbspline.h:66
ST_B_SPLINE::knots
std::vector< double > knots
Definition: stbspline.h:71
ST_B_SPLINE::get_valeur_fonction
virtual void get_valeur_fonction(int inter, double t, int degre, std::vector< double > &knots, double *grand_n)
Definition: stbspline.cpp:135
ST_B_SPLINE::~ST_B_SPLINE
~ST_B_SPLINE()
Definition: stbspline.cpp:93
ST_B_SPLINE::inverser2
virtual int inverser2(double &t, double *xyz, int num_test, double precision=1e-6)
Definition: stbspline.cpp:402
ST_B_SPLINE::nb_point
int nb_point
Definition: stbspline.h:69
ot_mathematique.h
OT_VECTEUR_4D
Definition: ot_mathematique.h:215
ST_B_SPLINE::get_param_NURBS
virtual void get_param_NURBS(int &indx_premier_ptctr, TPL_LISTE_ENTITE< double > &param)
Definition: stbspline.cpp:568
ST_B_SPLINE::deriver
virtual void deriver(double t, double *xyz)
Definition: stbspline.cpp:340
ST_B_SPLINE::degre
int degre
Definition: stbspline.h:68
ST_B_SPLINE::indexptsctr
std::vector< int > indexptsctr
Definition: stbspline.h:70
ST_B_SPLINE::get_type_geometrique
virtual int get_type_geometrique(TPL_LISTE_ENTITE< double > &param)
Definition: stbspline.cpp:493
ST_B_SPLINE::binomialCoef
virtual void binomialCoef(double *Bin, int degre)
Definition: stbspline.cpp:118
ST_B_SPLINE::deriver_seconde
virtual void deriver_seconde(double t, double *ddxyz, double *dxyz=NULL, double *xyz=NULL)
Definition: stbspline.cpp:358
TPL_LISTE_ENTITE< double >
ST_B_SPLINE::get_tmin
virtual double get_tmin()
Definition: stbspline.cpp:459
ST_B_SPLINE::get_intervalle
virtual int get_intervalle(int nbptsctr, int degre, double t, std::vector< double > &knots)
Definition: stbspline.cpp:97
st_point.h
ST_B_SPLINE::get_longueur
virtual double get_longueur(double t1, double t2, double precis=1e6)
Definition: stbspline.cpp:477
ST_B_SPLINE::get_periode
virtual double get_periode(void)
Definition: stbspline.cpp:488
ST_B_SPLINE::ptsctr
std::vector< OT_VECTEUR_4D > ptsctr
Definition: stbspline.h:72
ST_COURBE
Definition: st_courbe.h:33