00001 //=========================================================================== 00002 //= octree.h Diciembre de 1999 = 00003 //=-------------------------------------------------------------------------= 00004 //= Definiciones de la clase OCTREE. = 00005 //= NOTA: No incluya este encabezado en los modulos. Incluya a = 00006 //= geometria.h. = 00007 //=-------------------------------------------------------------------------= 00008 //= ADVERTENCIA: ESTE SOFTWARE NO ESTA CONCEBIDO NI DISENNADO PARA EL USO = 00009 //= EN EQUIPO DE CONTROL EN LINEA EN ENTORNOS PELIGROSOS QUE REQUIERAN UN = 00010 //= DESEMPENNO LIBRE DE FALLAS, COMO LA OPERACION DE PLANTAS NUCLEARES, = 00011 //= SISTEMAS DE NAVEGACION O COMUNICACION EN AVIONES, TRAFICO AEREO, = 00012 //= EQUIPO MEDICO DEL CUAL DEPENDAN VIDAS HUMANAS O SISTEMAS DE ARMAMENTO, = 00013 //= EN LOS CUALES UNA FALLA EN EL SOFTWARE PUEDA IMPLICAR DIRECTAMENTE LA = 00014 //= MUERTE, DANNOS PERSONALES O DANNOS FISICOS Y/O AMBIENTALES GRAVES = 00015 //= ("ACTIVIDADES DE ALGO RIESGO"). = 00016 //=-------------------------------------------------------------------------= 00017 //= Autor original: Oscar J. Chavarro G. A.K.A. JEDILINK. Copyright (c), = 00018 //= 1997 - 2003, oscarchavarro@hotmail.com = 00019 //= AQUYNZA es software libre, y se rige bajo los terminos de la licencia = 00020 //= LGPL de GNU (http://www.gnu.org). Para mayor informacion respecto a la = 00021 //= licencia de uso, consulte el archivo ./doc/LICENCIA en la distribucion. = 00022 //=========================================================================== 00023 00024 #ifndef __OCTREE__ 00025 #define __OCTREE__ 00026 00027 #include "jed_defs.h" 00028 00029 #ifndef __GEOMETRIA__ 00030 #error "No incluya a octree.h, incluya a geometria.h!" 00031 #endif 00032 00033 #ifdef VEL_ROSITA 00034 #include "toolkits/geom/geometria.h" 00035 #endif 00036 00037 #include "toolkits/geom/octree_n.h" 00038 #include <stdio.h> 00039 00040 class OCTREE : public GEOMETRIA_3D 00041 { 00042 private: 00043 double _lado; 00044 IMAGEN *imagen; 00045 NODO_OCTREE *Raiz; 00046 00047 public: 00048 //- Metodos standard de GEOMETRIA AQUYNZA ------------------------------- 00049 OCTREE(double l); 00050 virtual ~OCTREE(); 00051 00052 void minmax(VECTOR *min, VECTOR *max); 00053 #ifdef GL_ENABLED 00054 void 00055 pintar_gl(CALIDAD_VISUAL *Calidad, MATERIAL* Material, CAMARA *Camara); 00056 #endif 00057 void pintar_povray(FILE *fd); 00058 void pintar_aqz(FILE *fd); 00059 void anexar_textura(IMAGEN *img); 00060 int clasificar_punto(VECTOR p); 00061 virtual GEOMETRIA *crear_copia(void); 00062 double interseccion(RAYO *Rayo, VECTOR &punto, VECTOR &normal); 00063 00064 //- Metodos especificos de la clase OCTREE ------------------------------ 00065 double lado(void); 00066 void set_lado(double l); 00067 void elim(void); 00068 void calcular(GEOMETRIA *Fuente, int nivel); 00069 void leer(FILE *fd); 00070 void escribir(FILE *fd); 00071 }; 00072 00073 #endif // __OCTREE__ 00074 00075 //=========================================================================== 00076 //= EOF = 00077 //=========================================================================== 00078