00001 //=========================================================================== 00002 //= curva.h Diciembre de 1999 = 00003 //=-------------------------------------------------------------------------= 00004 //= Definicion del esquema de representacion de curvas AQUYNZA = 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 #ifndef __CURVA__ 00023 #define __CURVA__ 00024 00025 #include "jed_defs.h" 00026 #include "entidad.h" 00027 #include "vector.h" 00028 #include "toolkits/util/regexp.h" 00029 #include "toolkits/util/parsero.h" 00030 #include "arreglo.h" 00031 00032 class CURVA : public ENTIDAD { 00033 protected: 00034 double t; // Es el tiempo de la simulacion! 00035 public: 00036 void set_tiempo(double tiempo); 00037 virtual void actualizar(void); 00038 }; 00039 00040 class CURVA_PARAMETRICA; 00041 00042 class SEGMENTO_DE_CURVA_PARAMETRICA { 00043 private: 00044 double tiempo_final; 00045 EXPRESION_REGULAR x_t; 00046 EXPRESION_REGULAR y_t; 00047 EXPRESION_REGULAR z_t; 00048 public: 00049 SEGMENTO_DE_CURVA_PARAMETRICA(); 00050 BOOLEAN leer(TOKENIZADOR *Sabiondo); 00051 VECTOR evaluar(double t); 00052 00053 friend class CURVA_PARAMETRICA; 00054 }; 00055 00056 enum ENUM_TMOV_CURVA { 00057 TMC_INVALIDO = 0, 00058 TMC_STOP, // Al final de la curva, se queda quieto 00059 TMC_BACKWARD, // Al final de la curva, se mueve hacia atras 00060 TMC_REPLAY // Al final de la curva, salta al principio 00061 }; 00062 00063 class CURVA_PARAMETRICA : public CURVA { 00064 private: 00065 ARREGLO <SEGMENTO_DE_CURVA_PARAMETRICA *> arr_segmentos; 00066 double tiempo_inicial; 00067 double tiempo_final; 00068 int tipo_movimiento; // Uno de los TMOV_CURVA 00069 public: 00070 CURVA_PARAMETRICA(); 00071 virtual ~CURVA_PARAMETRICA(); 00072 //- Implementacion de ENTIDAD ------------------------------------------- 00073 BOOLEAN 00074 consultar_variable(const char *nombre_variable, int &tipo, void **ref); 00075 00076 //- Implementacion de CURVA --------------------------------------------- 00077 void actualizar(void); 00078 00079 //- Metodos particulares de la clase CURVA_PARAMETRICA ------------------ 00080 BOOLEAN leer(TOKENIZADOR *Sabiondo); 00081 VECTOR evaluar(void); 00082 }; 00083 00084 #endif // __CURVA__ 00085 00086 //=========================================================================== 00087 //= EOF = 00088 //=========================================================================== 00089