Ignore:
Timestamp:
04/26/06 19:02:47 (19 years ago)
Author:
gumbau
Message:

GeoLodTreeLibrary? leaves load from older leaf file format

Location:
GTP/trunk/Lib/Geom/shared/GTGeometry/src/libs/leaves
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Geom/shared/GTGeometry/src/libs/leaves/Arbol.cpp

    r831 r834  
    522522        { 
    523523                j=i; 
    524                 while (Hojas[j].padre != -1) j= Hojas[j].padre; 
     524                while (Hojas[j].padre > -1) j= Hojas[j].padre; 
    525525                Hojas[i].raiz = j; 
    526526 
  • GTP/trunk/Lib/Geom/shared/GTGeometry/src/libs/leaves/Hoja.cpp

    r830 r834  
    1 #include <GL\glut.h> 
     1#include <math.h> 
    22#include "Hoja.h" 
    33 
     
    77//-------------------------------------------------------------------------------------------------------------------------------- 
    88Hoja::Hoja(void)  
    9 { 
    10          
    11         Vert_Hoja[0] = Vert_Hoja[1] = Vert_Hoja[2] = Vert_Hoja[3] = 0; 
     9{        
     10        Vert_Hoja[0] = Vert_Hoja[1] = Vert_Hoja[2] = Vert_Hoja[3] =0;  
     11        Centro[0] = Centro[1] = Centro[2] = 0; 
    1212        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 = true; 
    1317        padre=-1; 
    14         Cuantas_hojas = 1; 
    1518        hijoi = hijod = -1; 
    1619        raiz= visible= -1; 
    17 //      prev = next = -1; 
    18          
    19                  
    2020} 
    2121 
     
    2727Hoja::Hoja (const Hoja& aHoja) 
    2828{ 
    29  
    30  
    3129        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         
    3244        padre = aHoja.padre; 
    3345        hijoi = aHoja.hijoi; 
     
    3547        visible = aHoja.visible; 
    3648        raiz = aHoja.raiz; 
    37          
    38         for (int i = 0L; i < 4; i++) 
    39                 Vert_Hoja[i] = aHoja.Vert_Hoja[i];  
    40         for ( i = 0L; i < 3; i++) 
    41                 Normal[i] = aHoja.Normal[i];  
    42          
    43  
    4449} 
    4550 
     
    4752 
    4853//-------------------------------------------------------------------------------------------------------------------------------- 
    49 // Destructor. We must deallocate the memory allocated for pointers to Vert_Hoja and edges 
     54// Destructor. We must deallocate the memory allocated for pointers to vertices and edges 
    5055//-------------------------------------------------------------------------------------------------------------------------------- 
    5156Hoja::~Hoja (void) 
     
    5459 
    5560 
     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 TracChangeset for help on using the changeset viewer.