ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/mailleur/src/m3d_tetra.cpp
Revision: 54
Committed: Fri Sep 28 19:43:11 2007 UTC (17 years, 7 months ago) by francois
Original Path: magic/lib/mailleur/mailleur/src/m3d_tetra.cpp
File size: 3481 byte(s)
Log Message:

File Contents

# User Rev Content
1 5 //------------------------------------------------------------
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     // m3d_tetra.cpp
16     //
17     //------------------------------------------------------------
18     //------------------------------------------------------------
19     // COPYRIGHT 2000
20     // Version du 02/03/2006 à 11H23
21     //------------------------------------------------------------
22     //------------------------------------------------------------
23    
24    
25     #include "gestionversion.h"
26    
27     //#include <vcl.h>
28     //#pragma hdrstop
29    
30     #include <math.h>
31     #include "m3d_tetra.h"
32     #include "ot_mathematique.h"
33     #include "const.h"
34    
35     //---------------------------------------------------------------------------
36    
37     //#pragma package(smart_init)
38    
39    
40    
41    
42 francois 54 M3D_TETRA::M3D_TETRA(unsigned long num,MG_ELEMENT_TOPOLOGIQUE* topo,class MG_NOEUD *mgnoeud1,class MG_NOEUD *mgnoeud2,class MG_NOEUD *mgnoeud3,class MG_NOEUD *mgnoeud4,class MG_TRIANGLE* mgtriangle1,class MG_TRIANGLE* mgtriangle2,class MG_TRIANGLE* mgtriangle3,class MG_TRIANGLE* mgtriangle4,int origine):MG_TETRA(num,topo,mgnoeud1,mgnoeud2,mgnoeud3,mgnoeud4,mgtriangle1,mgtriangle2,mgtriangle3,mgtriangle4,origine),etat(ACTIF)//,optimisation(0)
43 5 {
44     calcule_volume();
45     }
46    
47 francois 54 M3D_TETRA::M3D_TETRA(MG_ELEMENT_TOPOLOGIQUE* topo,class MG_NOEUD *mgnoeud1,class MG_NOEUD *mgnoeud2,class MG_NOEUD *mgnoeud3,class MG_NOEUD *mgnoeud4,class MG_TRIANGLE* mgtriangle1,class MG_TRIANGLE* mgtriangle2,class MG_TRIANGLE* mgtriangle3,class MG_TRIANGLE* mgtriangle4,int origine):MG_TETRA(topo,mgnoeud1,mgnoeud2,mgnoeud3,mgnoeud4,mgtriangle1,mgtriangle2,mgtriangle3,mgtriangle4,origine),etat(ACTIF)//,optimisation(0)
48 5 {
49     calcule_volume();
50     }
51    
52 francois 35 M3D_TETRA::M3D_TETRA(M3D_TETRA& mdd):MG_TETRA(mdd),etat(mdd.etat),volume(mdd.volume)//,optimisation(mdd.optimisation)
53 5 {
54     }
55    
56     M3D_TETRA::~M3D_TETRA()
57     {
58     }
59    
60     void M3D_TETRA::etat_detruit(void)
61     {
62     etat=DETRUIT;
63     }
64    
65     void M3D_TETRA::etat_actif(void)
66     {
67     etat=ACTIF;
68     }
69    
70     int M3D_TETRA::get_etat(void)
71     {
72    
73     return etat;
74     }
75    
76     int M3D_TETRA::get_type_entite(void)
77     {
78     return IDM3D_TETRA;
79     }
80    
81    
82     double M3D_TETRA::get_volume(void)
83     {
84     return volume;
85     }
86    
87    
88     void M3D_TETRA::change_volume(double vol)
89     {
90     volume=vol;
91     }
92    
93    
94     void M3D_TETRA::calcule_volume(void)
95     {
96     OT_VECTEUR_3D ab(noeud2->get_x()-noeud1->get_x(),noeud2->get_y()-noeud1->get_y(),noeud2->get_z()-noeud1->get_z());
97     OT_VECTEUR_3D ac(noeud3->get_x()-noeud1->get_x(),noeud3->get_y()-noeud1->get_y(),noeud3->get_z()-noeud1->get_z());
98     OT_VECTEUR_3D da(noeud1->get_x()-noeud4->get_x(),noeud1->get_y()-noeud4->get_y(),noeud1->get_z()-noeud4->get_z());
99    
100     OT_VECTEUR_3D pvec=ab&ac;
101     volume=pvec*da;
102     volume=fabs(volume)/3.;
103    
104     }
105 francois 35 /*
106     int M3D_TETRA::est_optimise(void)
107     {
108     return optimisation;
109     }
110 5
111 francois 35 void M3D_TETRA::est_optimise(int num)
112     {
113     optimisation=num;
114     }
115     */
116     double M3D_TETRA::get_qualite(void)
117     {
118     return qualite;
119     }
120    
121     void M3D_TETRA::change_qualite(double qu)
122     {
123     qualite=qu;
124     }
125