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
virtual void deriver_fonction(int inter, double t, int degre, int dd, std::vector< double > &knots, double *f_deriver)
Definition: stbsplines.cpp:236
virtual double get_vmax(void)
Definition: stbsplines.cpp:658
std::vector< double > knots_v
Definition: stbsplines.h:84
double periode_u
Definition: stbsplines.h:74
double periode_v
Definition: stbsplines.h:76
virtual double get_umax(void)
Definition: stbsplines.cpp:650
virtual void set_periodique_u(int)
Definition: stbsplines.cpp:128
std::vector< int > indexptsctr
Definition: stbsplines.h:82
virtual double get_periode_v(void)
Definition: stbsplines.cpp:642
virtual void get_param_NURBS(int &indx_premier_ptctr, TPL_LISTE_ENTITE< double > &param)
Definition: stbsplines.cpp:753
virtual void est_util(class ST_GESTIONNAIRE *gest)
Definition: stbsplines.cpp:744
virtual void inverser(double *uv, double *xyz, double precision=1e-6)
Definition: stbsplines.cpp:502
virtual double get_periode_u(void)
Definition: stbsplines.cpp:638
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
std::vector< OT_VECTEUR_4D > ptsctr
Definition: stbsplines.h:85
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
virtual void deriver(double *uv, double *xyzdu, double *xyzdv)
Definition: stbsplines.cpp:435
virtual void set_periodique_v(int)
Definition: stbsplines.cpp:138
std::vector< double > knots_u
Definition: stbsplines.h:83
virtual int est_periodique_v(void)
Definition: stbsplines.cpp:634
virtual void deriver_kieme(double *uv, int d, OT_VECTEUR_4D *skl)
Definition: stbsplines.cpp:392
virtual double get_umin(void)
Definition: stbsplines.cpp:646
virtual int get_intervalle(int nb_point, int degre, double t, std::vector< double > &knots)
Definition: stbsplines.cpp:148
virtual void get_valeur_fonction(int inter, double t, int degre, std::vector< double > &knots, double *grand_n)
Definition: stbsplines.cpp:171
virtual void binomialCoef(double *Bin, int degre)
Definition: stbsplines.cpp:317
virtual void evaluer(double *uv, double *xyz)
Definition: stbsplines.cpp:195
virtual int inverser2(double *uv, double *xyz, int num_test, double precision)
Definition: stbsplines.cpp:515
virtual double get_vmin(void)
Definition: stbsplines.cpp:654
virtual void initialiser(class ST_GESTIONNAIRE *gest)
Definition: stbsplines.cpp:689
virtual int get_type_geometrique(TPL_LISTE_ENTITE< double > &param)
Definition: stbsplines.cpp:663
virtual int est_periodique_u(void)
Definition: stbsplines.cpp:630
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
#define skl(i, j)
#define f_deriver(i, j)
#define grand_n(i, j)
#define Bin(i, j)