ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/sat/src/sat_straight.cpp
Revision: 433
Committed: Thu Oct 17 14:04:40 2013 UTC (11 years, 6 months ago) by francois
File size: 3766 byte(s)
Log Message:
Magic V4. Nouvelle approche pour les exe (suite)

File Contents

# User Rev Content
1 francois 283 //------------------------------------------------------------
2     //------------------------------------------------------------
3     // MAGiC
4     // Jean Christophe Cuilli�re et Vincent FRANCOIS
5     // D�partement de G�nie M�canique - UQTR
6     //------------------------------------------------------------
7     // Le projet MAGIC est un projet de recherche du d�partement
8     // de g�nie m�canique de l'Universit� du Qu�bec �
9     // Trois Rivi�res
10     // Les librairies ne peuvent �tre utilis�es sans l'accord
11     // des auteurs (contact : francois@uqtr.ca)
12     //------------------------------------------------------------
13     //------------------------------------------------------------
14     //
15     // sat_straight.cpp
16     //
17     //------------------------------------------------------------
18     //------------------------------------------------------------
19     // COPYRIGHT 2000
20     // Version du 02/03/2006 � 11H24
21     //------------------------------------------------------------
22     //------------------------------------------------------------
23    
24    
25     #include "gestionversion.h"
26     #include "sat_straight.h"
27     #include "ot_mathematique.h"
28     #include "constantegeo.h"
29    
30     #include <math.h>
31    
32     SAT_STRAIGHT::SAT_STRAIGHT(unsigned long num):SAT_COURBE(num)
33     {
34     }
35    
36     SAT_STRAIGHT::SAT_STRAIGHT():SAT_COURBE()
37     {
38     }
39    
40     SAT_STRAIGHT::~SAT_STRAIGHT()
41     {
42     }
43    
44    
45     void SAT_STRAIGHT::evaluer(double t,double *xyz)
46     {
47     xyz[0]=root[0]+t*dir[0];
48     xyz[1]=root[1]+t*dir[1];
49     xyz[2]=root[2]+t*dir[2];
50     }
51    
52     void SAT_STRAIGHT::deriver(double t,double *xyz)
53     {
54     xyz[0]=dir[0];
55     xyz[1]=dir[1];
56     xyz[2]=dir[2];
57     }
58    
59     void SAT_STRAIGHT::deriver_seconde(double t,double *ddxyz,double* dxyz,double* xyz)
60     {
61     ddxyz[0]=0.;
62     ddxyz[1]=0.;
63     ddxyz[2]=0.;
64     if (dxyz!=NULL) deriver(t,dxyz);
65     if (xyz!=NULL) evaluer(t,xyz);
66     }
67    
68     void SAT_STRAIGHT::inverser(double& t,double *xyz,double precision)
69     {
70     int num;
71     if (!(OPERATEUR::egal(dir[0],0.0,0.0001))) num=0;
72     else if (!(OPERATEUR::egal(dir[1],0.0,0.0001))) num=1;
73     else num=2;
74    
75     t=(xyz[num]-root[num])/dir[num];
76     }
77    
78     double SAT_STRAIGHT::get_tmin()
79     {
80     return -1e300;
81     }
82    
83     double SAT_STRAIGHT::get_tmax()
84     {
85     return 1e300;
86     }
87    
88     double SAT_STRAIGHT::get_longueur(double t1,double t2,double precis)
89     {
90     return (sqrt(dir[0]*dir[0]+dir[1]*dir[1]+dir[2]*dir[2])*(t2-t1));
91     }
92    
93     int SAT_STRAIGHT::est_periodique(void)
94     {
95     return 0;
96     }
97    
98     double SAT_STRAIGHT::get_periode(void)
99     {
100     return 0.;
101     }
102    
103     int SAT_STRAIGHT::get_type_geometrique(TPL_LISTE_ENTITE<double> &param)
104     {
105     param.ajouter(root[0]);
106     param.ajouter(root[1]);
107     param.ajouter(root[2]);
108     param.ajouter(dir[0]);
109     param.ajouter(dir[1]);
110     param.ajouter(dir[2]);
111     return MGCo_LINE;
112     }
113    
114    
115    
116     void SAT_STRAIGHT::get_param_NURBS(int& indx_premier_ptctr,TPL_LISTE_ENTITE<double> &param)
117     {
118     // The first parameter indicate the code access
119     param.ajouter(1);
120     // The follewing two parameters of the list indicate the orders of the net points
121    
122     param.ajouter(2);
123     param.ajouter(0);
124    
125     // The follewing two parameters indicate the number of rows and colons of the control points
126     // respectively to the two parameters directions
127    
128     param.ajouter(2);
129     param.ajouter(0);
130    
131     // this present the knot vector in the u-direction
132    
133     param.ajouter(0);
134     param.ajouter(0);
135     param.ajouter(1);
136     param.ajouter(1);
137    
138     double u_inf=10e6;
139     double xyz[3];
140    
141    
142     xyz[0]=root[0]+u_inf*dir[0];
143     xyz[1]=root[1]+u_inf*dir[1];
144     xyz[2]=root[2]+u_inf*dir[2];
145    
146     param.ajouter(xyz[0]);
147     param.ajouter(xyz[1]);
148     param.ajouter(xyz[2]);
149 francois 433 param.ajouter(1.);
150 francois 283
151     xyz[0]=root[0]-u_inf*dir[0];
152     xyz[1]=root[1]-u_inf*dir[1];
153     xyz[2]=root[2]-u_inf*dir[2];
154    
155     param.ajouter(xyz[0]);
156     param.ajouter(xyz[1]);
157     param.ajouter(xyz[2]);
158 francois 433 param.ajouter(1.);
159 francois 283
160     indx_premier_ptctr=9;
161     }
162    
163