MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
st_b_spline_surf2.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 //####// st_b_spline_surf2.h
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:53:59 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 
23 #ifndef st_b_spline_surf2H
24 #define st_b_spline_surf2H
25 
26 
27 
28 
29 #include "st_surface.h"
30 #include "st_point.h"
31 #include "ot_mathematique.h"
32 #include "st_ident.h"
33 #include <vector> // etait <vector.h>
34 
35 
36 
37 
39 {
40 public :
41  ST_B_SPLINE_SURF2(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);
42  ST_B_SPLINE_SURF2(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);
44 
45 
46  virtual void evaluer(double *uv,double *xyz);
47  virtual void deriver(double *uv,double *xyzdu, double *xyzdv);
48  virtual void deriver_seconde(double *uv,double* xyzduu,double* xyzduv,double* xyzdvv,double *xyz = NULL , double *xyzdu = NULL , double *xyzdv =NULL);
49  virtual void inverser(double *uv,double *xyz,double precision=1e-6);
50  virtual int inverser2(double *uv,double *xyz,int num_test, double precision);
51  virtual int est_periodique_u(void);
52  virtual int est_periodique_v(void);
53  virtual double get_periode_u(void);
54  virtual double get_periode_v(void);
55 
56  virtual double get_umin(void);
57  virtual double get_umax(void);
58  virtual double get_vmin(void);
59  virtual double get_vmax(void);
60  virtual void initialiser(class ST_GESTIONNAIRE* gest);
61 
63  virtual void est_util(class ST_GESTIONNAIRE* gest);
64 
65 
66 private:
67 
68  virtual int get_intervalle(int nb_point, int degre, double t, std::vector<double> &knots);
69  virtual void get_valeur_fonction(int inter, double t, int degre, std::vector<double> &knots,double *grand_n);
70  virtual void deriver_fonction(int inter,double t,int degre,int dd,std::vector<double> &knots,double *f_deriver);
71  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);
72  virtual void deriver_kieme(double *uv,int d,OT_VECTEUR_4D *skl);
73  virtual void binomialCoef(double * Bin, int degre);
74 
76  double periode_u;
78  double periode_v;
79  int degre_u;
80  int degre_v;
83  int nb_point;
84  std::vector<int> indexptsctr;
85  std::vector<double> knots_u;
86  std::vector<double> knots_v;
87  std::vector<OT_VECTEUR_4D> ptsctr;
88  int sens;
89  double umin,umax;
90  double vmin,vmax;
91 };
92 
93 
94 #endif
95 
std::vector< int > indexptsctr
virtual int est_periodique_u(void)
virtual double get_vmin(void)
virtual double get_umin(void)
virtual void binomialCoef(double *Bin, int degre)
std::vector< OT_VECTEUR_4D > ptsctr
virtual void est_util(class ST_GESTIONNAIRE *gest)
virtual void get_valeur_fonction(int inter, double t, int degre, std::vector< double > &knots, double *grand_n)
virtual double get_periode_u(void)
virtual void deriver_seconde(double *uv, double *xyzduu, double *xyzduv, double *xyzdvv, double *xyz=NULL, double *xyzdu=NULL, double *xyzdv=NULL)
virtual void deriver_kieme(double *uv, int d, OT_VECTEUR_4D *skl)
ST_B_SPLINE_SURF2(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)
virtual int get_intervalle(int nb_point, int degre, double t, std::vector< double > &knots)
virtual int inverser2(double *uv, double *xyz, int num_test, double precision)
virtual void evaluer(double *uv, double *xyz)
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)
virtual double get_periode_v(void)
std::vector< double > knots_u
virtual void initialiser(class ST_GESTIONNAIRE *gest)
virtual int est_periodique_v(void)
virtual void deriver_fonction(int inter, double t, int degre, int dd, std::vector< double > &knots, double *f_deriver)
virtual int get_type_geometrique(TPL_LISTE_ENTITE< double > &param)
virtual void inverser(double *uv, double *xyz, double precision=1e-6)
virtual double get_umax(void)
virtual double get_vmax(void)
virtual void deriver(double *uv, double *xyzdu, double *xyzdv)
std::vector< double > knots_v
#define skl(i, j)
#define f_deriver(i, j)
#define grand_n(i, j)
#define Bin(i, j)