00001 //=========================================================================== 00002 //= e_abierto.h Enero del 2000 = 00003 //=-------------------------------------------------------------------------= 00004 //= Definicion de ESPACIO_ABIERTO = 00005 //=-------------------------------------------------------------------------= 00006 //= ADVERTENCIA: ESTE SOFTWARE NO ESTA CONCEBIDO NI DISENNADO PARA EL USO = 00007 //= EN EQUIPO DE CONTROL EN LINEA EN ENTORNOS PELIGROSOS QUE REQUIERAN UN = 00008 //= DESEMPENNO LIBRE DE FALLAS, COMO LA OPERACION DE PLANTAS NUCLEARES, = 00009 //= SISTEMAS DE NAVEGACION O COMUNICACION EN AVIONES, TRAFICO AEREO, = 00010 //= EQUIPO MEDICO DEL CUAL DEPENDAN VIDAS HUMANAS O SISTEMAS DE ARMAMENTO, = 00011 //= EN LOS CUALES UNA FALLA EN EL SOFTWARE PUEDA IMPLICAR DIRECTAMENTE LA = 00012 //= MUERTE, DANNOS PERSONALES O DANNOS FISICOS Y/O AMBIENTALES GRAVES = 00013 //= ("ACTIVIDADES DE ALGO RIESGO"). = 00014 //=-------------------------------------------------------------------------= 00015 //= Autor original: Oscar J. Chavarro G. A.K.A. JEDILINK. Copyright (c), = 00016 //= 1997 - 2003, oscarchavarro@hotmail.com = 00017 //= AQUYNZA es software libre, y se rige bajo los terminos de la licencia = 00018 //= LGPL de GNU (http://www.gnu.org). Para mayor informacion respecto a la = 00019 //= licencia de uso, consulte el archivo ./doc/LICENCIA en la distribucion. = 00020 //=========================================================================== 00021 00022 #include "jed_defs.h" 00023 00024 #ifndef __ESPACIO__ 00025 #error "No incluya a e_abierto.h, incluya a espacio.h!" 00026 #endif 00027 00028 #ifdef VEL_ROSITA 00029 #include "core/cosas/espacio.h" 00030 #include "toolkits/geom/terreno.h" 00031 #endif 00032 00033 #include "toolkits/util/dem.h" 00034 #include "arreglo.h" 00035 00036 class ESPACIO_ABIERTO; 00037 00038 class PARCHE_TERRENO { 00039 private: 00040 TERRENO *Geometria; 00041 double delta_x; 00042 double delta_y; 00043 00044 public: 00045 friend class ESPACIO_ABIERTO; 00046 }; 00047 00048 class ESPACIO_ABIERTO : public ESPACIO 00049 { 00050 private: 00051 //- Esquema de especificacion de un area geografica --------------------- 00052 GLOBAL_DEM *Dem; 00053 long int target_xpos; 00054 long int target_ypos; 00055 long int target_xtam; 00056 long int target_ytam; 00057 double _escala; 00058 double _exageracion; 00059 PALETA *Paleta; 00060 00061 //- Esquema de representacion de un terreno a trozos -------------------- 00062 BOOLEAN preprocesada; 00063 ARREGLO <PARCHE_TERRENO *> arr_parches; 00064 00065 //----------------------------------------------------------------------- 00066 void init(void); 00067 00068 public: 00069 00070 ESPACIO_ABIERTO(); 00071 ~ESPACIO_ABIERTO(); 00072 00073 #ifdef GL_ENABLED 00074 void pintar_gl(CALIDAD_VISUAL *Calidad, CAMARA *Camara); 00075 #endif 00076 virtual double interseccion(RAYO *Rayo, VECTOR *Punto, VECTOR *Normal); 00077 BOOLEAN leer_espacio(TOKENIZADOR *Sabiondo, LISTA <GLOBAL_DEM *> *Lst); 00078 void 00079 anexar_objetos_rayables(ARREGLO <OBJETO_RAYABLE *> &arr_objetos); 00080 double altura_espacio(VECTOR p); 00081 }; 00082 00083 //=========================================================================== 00084 //= EOF = 00085 //=========================================================================== 00086