ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/geometrie/src/vct_point.cpp
Revision: 66
Committed: Wed Mar 19 16:45:26 2008 UTC (17 years, 1 month ago) by souaissa
Original Path: magic/lib/geometrie/geometrie/src/vct_point.cpp
File size: 3249 byte(s)
Log Message:
reorganisation des classes de vectorisation. Situation normalement final pour le doc de khaled

File Contents

# User Rev Content
1 souaissa 66 #include "gestionversion.h"
2     //---------------------------------------------------------------------------
3    
4    
5     #pragma hdrstop
6    
7     #include "vct_point.h"
8     #include "mg_point.h"
9     //---------------------------------------------------------------------------
10     #include <iomanip.h>
11     #pragma package(smart_init)
12    
13    
14     VCT_POINT::VCT_POINT(MG_POINT* elemgeo):VCT_ELEMENT_GEOMETRIQUE(elemgeo)
15     {
16     elem_geo->get_param_NURBS(indx_premier_ptctr,nurbs_params);
17     nb_points=1./4*(nurbs_params.get_nb()-indx_premier_ptctr);
18     }
19    
20    
21     VCT_POINT::VCT_POINT(VCT_POINT& mdd):VCT_ELEMENT_GEOMETRIQUE(mdd.elem_geo)
22     {
23     mdd.elem_geo->get_param_NURBS(indx_premier_ptctr,nurbs_params);
24     nb_points=1./4*(nurbs_params.get_nb()-indx_premier_ptctr);
25     }
26    
27    
28     VCT_POINT::~VCT_POINT()
29     {
30     }
31    
32    
33     void VCT_POINT::get_vectorisation(vector<double2>& vct_lst)
34     {
35    
36     //int indx_premier_ptctr;
37     double2 ZERO=0.;
38     //TPL_LISTE_ENTITE<double> param_point;
39    
40     //elem_geo->get_param_NURBS(indx_premier_ptctr, param_point);
41     double2 vx,vy,vz,w;
42    
43     vx=nurbs_params.get(indx_premier_ptctr);
44     vy=nurbs_params.get(indx_premier_ptctr+1);
45     vz=nurbs_params.get(indx_premier_ptctr+2);
46     w=nurbs_params.get(indx_premier_ptctr+3);
47    
48     double2 norm_au_carre=vx*vx+vy*vy+vz*vz+w*w;
49     double2 norm=norm_au_carre^0.5;
50     if(norm==ZERO)
51     {
52     vct_lst.insert(vct_lst.end(),0.);
53     vct_lst.insert(vct_lst.end(),0.);
54     vct_lst.insert(vct_lst.end(),0.);
55     vct_lst.insert(vct_lst.end(),0.);
56     }
57     else{
58     vct_lst.insert(vct_lst.end(),vx/norm);
59     vct_lst.insert(vct_lst.end(),vy/norm);
60     vct_lst.insert(vct_lst.end(),vz/norm);
61     vct_lst.insert(vct_lst.end(),w/norm);
62     }
63     }
64    
65    
66     void VCT_POINT::get_geo_barycentre(double2* xyz)
67     {
68     xyz[0]=0.;
69     xyz[1]=0.;
70     xyz[2]=0.;
71     xyz[3]=0.;
72    
73    
74     for(int i=0;i<nb_points;i++)
75     {
76     xyz[0]=xyz[0]+nurbs_params.get(4*i+indx_premier_ptctr);
77     xyz[1]=xyz[1]+nurbs_params.get(4*i+indx_premier_ptctr+1);
78     xyz[2]=xyz[2]+nurbs_params.get(4*i+indx_premier_ptctr+2);
79     xyz[3]=xyz[2]+nurbs_params.get(4*i+indx_premier_ptctr+3);
80     }
81    
82     xyz[0]=1./nb_points*xyz[0];
83     xyz[1]=1./nb_points*xyz[1];
84     xyz[2]=1./nb_points*xyz[2];
85     xyz[3]=1./nb_points*xyz[3];
86     }
87    
88    
89     double2 VCT_POINT::get_inertie_au_centre_de_masse()
90     {
91     double2 xyz_g[4];
92     double2 xyzi[4];
93     this->get_geo_barycentre(xyz_g);
94    
95     xyzi[0]=0.;
96     xyzi[1]=0.;
97     xyzi[2]=0.;
98     xyzi[3]=0.;
99    
100    
101     double2 moment_inertie=0.;
102     for(int i=0;i<nb_points;i++)
103     {
104     xyzi[0]=xyz_g[0]-nurbs_params.get(4*i+indx_premier_ptctr);
105     xyzi[1]=xyz_g[1]-nurbs_params.get(4*i+indx_premier_ptctr+1);
106     xyzi[2]=xyz_g[2]-nurbs_params.get(4*i+indx_premier_ptctr+2);
107     xyzi[3]=xyz_g[3]-nurbs_params.get(4*i+indx_premier_ptctr+3);
108    
109     moment_inertie=moment_inertie+xyzi[0]*xyzi[0]+xyzi[1]*xyzi[1]+xyzi[2]*xyzi[2]+xyzi[3]*xyzi[3];
110     }
111     return moment_inertie;
112     }
113    
114    
115    
116     void VCT_POINT::enregistrer(std::ostream& o)
117     {
118    
119     int compt=0;
120     for(int i=indx_premier_ptctr;i<nurbs_params.get_nb();i++)
121     {
122     o<<setw(15)<<nurbs_params.get(i);
123     compt++;
124     if(compt==4) {
125     o<<endl;
126     compt=0;}
127     }
128    
129     }
130