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