1 | #include <math.h>
|
---|
2 | #include "Hoja.h"
|
---|
3 |
|
---|
4 | //--------------------------------------------------------------------------------------------------------------------------------
|
---|
5 | // Void constructor
|
---|
6 | // Parameters --> None
|
---|
7 | //--------------------------------------------------------------------------------------------------------------------------------
|
---|
8 | Hoja::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 | //--------------------------------------------------------------------------------------------------------------------------------
|
---|
32 | Hoja::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 | //--------------------------------------------------------------------------------------------------------------------------------
|
---|
59 | Hoja::~Hoja (void)
|
---|
60 | {
|
---|
61 | }
|
---|
62 |
|
---|
63 |
|
---|
64 | //--------------------------------------------------------------------------------------------------------------------------------
|
---|
65 | // CALCULA LA DISTANCIA ENTRE HOJAS
|
---|
66 | //--------------------------------------------------------------------------------------------------------------------------------
|
---|
67 |
|
---|
68 | float 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 |
|
---|
88 | float 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 |
|
---|