MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
sat_straight.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 //####// sat_straight.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:54:00 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 
23 
24 #include "sat_straight.h"
25 #include "ot_mathematique.h"
26 #include "constantegeo.h"
27 
28 #include <math.h>
29 
30 SAT_STRAIGHT::SAT_STRAIGHT(unsigned long num):SAT_COURBE(num)
31 {
32 }
33 
35 {
36 }
37 
39 {
40 }
41 
42 
43 void SAT_STRAIGHT::evaluer(double t,double *xyz)
44 {
45  xyz[0]=root[0]+t*dir[0];
46  xyz[1]=root[1]+t*dir[1];
47  xyz[2]=root[2]+t*dir[2];
48 }
49 
50 void SAT_STRAIGHT::deriver(double t,double *xyz)
51 {
52  xyz[0]=dir[0];
53  xyz[1]=dir[1];
54  xyz[2]=dir[2];
55 }
56 
57 void SAT_STRAIGHT::deriver_seconde(double t,double *ddxyz,double* dxyz,double* xyz)
58 {
59  ddxyz[0]=0.;
60  ddxyz[1]=0.;
61  ddxyz[2]=0.;
62  if (dxyz!=NULL) deriver(t,dxyz);
63  if (xyz!=NULL) evaluer(t,xyz);
64 }
65 
66 void SAT_STRAIGHT::inverser(double& t,double *xyz,double precision)
67 {
68  int num;
69  if (!(OPERATEUR::egal(dir[0],0.0,0.0001))) num=0;
70  else if (!(OPERATEUR::egal(dir[1],0.0,0.0001))) num=1;
71  else num=2;
72 
73  t=(xyz[num]-root[num])/dir[num];
74 }
75 
77 {
78  return -1e300;
79 }
80 
82 {
83  return 1e300;
84 }
85 
86 double SAT_STRAIGHT::get_longueur(double t1,double t2,double precis)
87 {
88  return (sqrt(dir[0]*dir[0]+dir[1]*dir[1]+dir[2]*dir[2])*(t2-t1));
89 }
90 
92 {
93  return 0;
94 }
95 
97 {
98  return 0.;
99 }
100 
102 {
103  param.ajouter(root[0]);
104  param.ajouter(root[1]);
105  param.ajouter(root[2]);
106  param.ajouter(dir[0]);
107  param.ajouter(dir[1]);
108  param.ajouter(dir[2]);
110 }
111 
112 
113 
114 void SAT_STRAIGHT::get_param_NURBS(int& indx_premier_ptctr,TPL_LISTE_ENTITE<double> &param)
115 {
116  param.ajouter(1);
117 
118  param.ajouter(2);
119  param.ajouter(0);
120 
121 
122  param.ajouter(2);
123  param.ajouter(0);
124 
125 
126  param.ajouter(0);
127  param.ajouter(0);
128  param.ajouter(1);
129  param.ajouter(1);
130 
131  double u_inf=10e6;
132  double xyz[3];
133 
134 
135  xyz[0]=root[0]+u_inf*dir[0];
136  xyz[1]=root[1]+u_inf*dir[1];
137  xyz[2]=root[2]+u_inf*dir[2];
138 
139  param.ajouter(xyz[0]);
140  param.ajouter(xyz[1]);
141  param.ajouter(xyz[2]);
142  param.ajouter(1.);
143 
144  xyz[0]=root[0]-u_inf*dir[0];
145  xyz[1]=root[1]-u_inf*dir[1];
146  xyz[2]=root[2]-u_inf*dir[2];
147 
148  param.ajouter(xyz[0]);
149  param.ajouter(xyz[1]);
150  param.ajouter(xyz[2]);
151  param.ajouter(1.);
152 
153  indx_premier_ptctr=9;
154 }
155 
156 
SAT_STRAIGHT::get_longueur
virtual double get_longueur(double t1, double t2, double precis=1e6)
Definition: sat_straight.cpp:86
sat_straight.h
SAT_STRAIGHT::est_periodique
virtual int est_periodique(void)
Definition: sat_straight.cpp:91
SAT_STRAIGHT::dir
double dir[3]
Definition: sat_straight.h:38
SAT_STRAIGHT::get_type_geometrique
virtual int get_type_geometrique(TPL_LISTE_ENTITE< double > &param)
Definition: sat_straight.cpp:101
SAT_STRAIGHT::get_param_NURBS
virtual void get_param_NURBS(int &indx_premier_ptctr, TPL_LISTE_ENTITE< double > &param)
Definition: sat_straight.cpp:114
OPERATEUR::egal
static int egal(double a, double b, double eps)
Definition: ot_mathematique.cpp:1629
SAT_STRAIGHT::get_periode
virtual double get_periode(void)
Definition: sat_straight.cpp:96
constantegeo.h
SAT_STRAIGHT::root
double root[3]
Definition: sat_straight.h:37
TPL_LISTE_ENTITE::ajouter
virtual void ajouter(X x)
Definition: tpl_liste_entite.h:38
SAT_STRAIGHT::~SAT_STRAIGHT
virtual ~SAT_STRAIGHT()
Definition: sat_straight.cpp:38
SAT_STRAIGHT::inverser
virtual void inverser(double &t, double *xyz, double precision=1e-6)
Definition: sat_straight.cpp:66
ot_mathematique.h
SAT_STRAIGHT::get_tmin
virtual double get_tmin()
Definition: sat_straight.cpp:76
sqrt
double2 sqrt(double2 &val)
Definition: ot_doubleprecision.cpp:345
SAT_STRAIGHT::SAT_STRAIGHT
SAT_STRAIGHT()
Definition: sat_straight.cpp:34
TPL_LISTE_ENTITE< double >
GEOMETRIE::CONST::Co_LINE
@ Co_LINE
Definition: constantegeo.h:32
SAT_COURBE
Definition: sat_courbe.h:33
SAT_STRAIGHT::deriver_seconde
virtual void deriver_seconde(double t, double *ddxyz, double *dxyz=NULL, double *xyz=NULL)
Definition: sat_straight.cpp:57
SAT_STRAIGHT::evaluer
virtual void evaluer(double t, double *xyz)
Definition: sat_straight.cpp:43
SAT_STRAIGHT::deriver
virtual void deriver(double t, double *xyz)
Definition: sat_straight.cpp:50
SAT_STRAIGHT::get_tmax
virtual double get_tmax()
Definition: sat_straight.cpp:81