source: GTP/trunk/Lib/Geom/shared/GTGeometry/src/hoja.cpp @ 774

Revision 774, 3.4 KB checked in by gumbau, 18 years ago (diff)

GTGeometry and GeoTool? initial imports

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