00001 //=========================================================================== 00002 //= colision.h Julio de 1999 = 00003 //=-------------------------------------------------------------------------= 00004 //= Declaraciones de las operaciones utilitarias para la deteccion general = 00005 //= de colisiones. = 00006 //=-------------------------------------------------------------------------= 00007 //= ADVERTENCIA: ESTE SOFTWARE NO ESTA CONCEBIDO NI DISENNADO PARA EL USO = 00008 //= EN EQUIPO DE CONTROL EN LINEA EN ENTORNOS PELIGROSOS QUE REQUIERAN UN = 00009 //= DESEMPENNO LIBRE DE FALLAS, COMO LA OPERACION DE PLANTAS NUCLEARES, = 00010 //= SISTEMAS DE NAVEGACION O COMUNICACION EN AVIONES, TRAFICO AEREO, = 00011 //= EQUIPO MEDICO DEL CUAL DEPENDAN VIDAS HUMANAS O SISTEMAS DE ARMAMENTO, = 00012 //= EN LOS CUALES UNA FALLA EN EL SOFTWARE PUEDA IMPLICAR DIRECTAMENTE LA = 00013 //= MUERTE, DANNOS PERSONALES O DANNOS FISICOS Y/O AMBIENTALES GRAVES = 00014 //= ("ACTIVIDADES DE ALGO RIESGO"). = 00015 //=-------------------------------------------------------------------------= 00016 //= Autor original: Oscar J. Chavarro G. A.K.A. JEDILINK. Copyright (c), = 00017 //= 1997 - 2003, oscarchavarro@hotmail.com = 00018 //= AQUYNZA es software libre, y se rige bajo los terminos de la licencia = 00019 //= LGPL de GNU (http://www.gnu.org). Para mayor informacion respecto a la = 00020 //= licencia de uso, consulte el archivo ./doc/LICENCIA en la distribucion. = 00021 //=========================================================================== 00022 00023 #ifndef __COLISION__ 00024 #define __COLISION__ 00025 00026 #include "jed_defs.h" 00027 #include "core/simul/conflicto.h" 00028 00029 class MINMAX 00030 /* Clase temporal de prueba. OJO: debe ser eliminada algun dia */ 00031 { 00032 public: 00033 RAYO *Rayito; 00034 COLOR color; 00035 VECTOR min; 00036 VECTOR max; 00037 MINMAX(); 00038 ~MINMAX(); 00039 #ifdef GL_ENABLED 00040 void pintar_gl(void); 00041 #endif 00042 }; 00043 00044 extern LISTA <MINMAX *> TMP_debug_visual; 00045 00046 class CONTACTO 00051 { 00052 public: // OJO! 00053 COSA *A; // Una colision en AQUYNZA siempre ocurre en un y solo un punto, 00054 COSA *B; // el cual siempre es un punto en comun entre dos y solo dos 00055 // COSAs. 00056 00057 VECTOR p; // Coordenadas del punto de contacto en el sistema de coordenadas 00058 // del mundo 00059 00060 // OJO: no se supone que las dos normales son de igual direccion? 00061 VECTOR n_a; // Normales a las superficies de las cosas en el punto 00062 VECTOR n_b; // de contacto 00063 double t; // Tiempo estimado hace que la interpenetracion ocurrio 00064 00065 CONTACTO(); 00066 ~CONTACTO(); 00067 }; 00068 00069 class MANEJADOR_CONFLICTOS_COLISION : public MANEJADOR_CONFLICTOS { 00070 public: 00071 MANEJADOR_CONFLICTOS_COLISION(); 00072 virtual ~MANEJADOR_CONFLICTOS_COLISION(); 00073 void detectar_conflictos(LISTA <COSA *> *Cosas, double udt); 00074 void resolver_conflictos(void); 00075 }; 00076 00077 #endif // __COLISION__ 00078 00079 //=========================================================================== 00080 //= EOF = 00081 //=========================================================================== 00082