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

Revision 895, 3.6 KB checked in by gumbau, 18 years ago (diff)

Working LODTree constructor and visualizer

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