source: GTP/trunk/Lib/Geom/shared/GTGeometry/src/libs/leaves/Hoja.cpp @ 985

Revision 985, 3.6 KB checked in by gumbau, 18 years ago (diff)
Line 
1#include <math.h>
2#include "Hoja.h"
3
4//--------------------------------------------------------------------------------------------------------------------------------
5// Void constructor
6// Parameters --> None
7//--------------------------------------------------------------------------------------------------------------------------------
8Hoja::Hoja(void)
9{       
10        Vert_Hoja[0] = Vert_Hoja[1] = Vert_Hoja[2] = Vert_Hoja[3] =0;
11        Centro[0] = Centro[1] = Centro[2] = 0;
12        Normal[0] = Normal[1] = Normal[2] = 0;
13        hoja_cerca=-1;
14        Cuantas_hojas = 1;
15        dist = -1;
16        coplanar = -1;
17        criterio = -1;
18        hoja_cop = -1;
19        hoja_crit =-1;
20        existe = false;
21        padre=-1;
22        hijoi = hijod = -1;
23        raiz= visible= -1;
24}
25
26
27//--------------------------------------------------------------------------------------------------------------------------------
28// Copy constructor
29// Parameters --> const Hoja& aHoja : The Hoja to copy
30//--------------------------------------------------------------------------------------------------------------------------------
31Hoja::Hoja (const Hoja& aHoja)
32{
33        Cuantas_hojas = aHoja.Cuantas_hojas;;
34        hoja_cerca = aHoja.hoja_cerca;
35        hoja_crit = aHoja.hoja_crit;
36        dist = aHoja.dist;
37        existe = aHoja.existe;
38        coplanar = aHoja.coplanar;
39        hoja_cop = aHoja.hoja_cop;
40        criterio = aHoja.criterio;
41        for ( int i=0;i<3;i++){
42                Centro[i] = aHoja.Centro[i];
43                Normal[i] = aHoja.Normal[i];
44        }
45        for (i = 0L; i < 4; i++)
46                Vert_Hoja[i] = aHoja.Vert_Hoja[i];
47       
48        padre = aHoja.padre;
49        hijoi = aHoja.hijoi;
50        hijod = aHoja.hijod;
51        visible = aHoja.visible;
52        raiz = aHoja.raiz;
53}
54
55
56
57//--------------------------------------------------------------------------------------------------------------------------------
58// Destructor. We must deallocate the memory allocated for pointers to vertices and edges
59//--------------------------------------------------------------------------------------------------------------------------------
60Hoja::~Hoja (void)
61{
62}
63
64
65//--------------------------------------------------------------------------------------------------------------------------------
66//  CALCULA LA DISTANCIA ENTRE HOJAS
67//--------------------------------------------------------------------------------------------------------------------------------
68
69float Hoja::Distancia (Hoja& Hoja1)
70{
71        float dist =0;
72        float x1,y1,z1;
73
74        x1 = Hoja1.Centro[0]; y1 = Hoja1.Centro[1] ; z1 = Hoja1.Centro[2];
75
76
77        //DISTANCIA ENTRE CENTROS
78
79        dist = ((Centro[0]-x1)*(Centro[0]-x1)) + ((Centro[1]-y1)*(Centro[1]-y1)) + ((Centro[2]-z1)*(Centro[2]-z1));
80
81        return (dist);
82}
83
84
85//--------------------------------------------------------------------------------------------------------------------------------
86//  CALCULA LA COPLANARIDAD ENTRE HOJAS
87//--------------------------------------------------------------------------------------------------------------------------------
88
89float Hoja::Coplanaridad (Hoja& Hoja1)
90{
91        float cop =0;
92        float modulo1, modulo2;
93        float x1,y1,z1, nx1, ny1, nz1;
94        float nx, ny, nz;
95
96        //hoja pasada como parametro, normalizo las componentes
97        x1 = Hoja1.Normal[0]; y1 = Hoja1.Normal[1] ; z1 = Hoja1.Normal[2];
98        modulo1 = sqrt ( (x1*x1) + (y1*y1) + (z1*z1));
99        nx1 = x1 / modulo1;
100        ny1 = y1 / modulo1;
101        nz1 = z1 / modulo1;
102
103        // hoja desde la que llamo
104
105        modulo2 = sqrt ( (Normal[0]*Normal[0]) + (Normal[1]*Normal[1]) + (Normal[2]*Normal[2]));
106        nx = Normal[0] / modulo2;
107        ny = Normal[1] / modulo2;
108        nz = Normal[2] / modulo2;
109
110        // producto escalar : si es proximo a 0, perpendiculares, a 1, coplanares
111
112        cop = (nx1*nx) + (ny1*ny) + (nz1*nz);
113
114
115        return (fabs(cop));
116
117}
118
Note: See TracBrowser for help on using the repository browser.