00001 //=========================================================================== 00002 //= material.h Julio - septiembre de 1998 = 00003 //=-------------------------------------------------------------------------= 00004 //= Definiciones de la clase MATERIAL = 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 __MATERIAL__ 00023 #define __MATERIAL__ 00024 00025 #include "jed_defs.h" // Incluir antes que nada, en ese modulo se definen 00026 // aspectos importantes para la portabilidad del sistema 00027 00028 #include "color.h" 00029 #include "toolkits/util/parsero.h" 00030 //#include "lista.h" 00031 00032 class MATERIAL { 00033 private: 00034 int _codigo; // Indice serial usado para identificar el material en 00035 // la tabla de coeficientes de friccion. 00036 char _nombre[MAX_CAD]; 00037 00038 COLOR _ambiente; 00039 COLOR _difusa; 00040 COLOR _especular; 00041 COLOR _emision; 00042 double _transparencia; // En el rango [0.0 - 1.0] 00043 double _phong_exp; // En el rango [0-128] 00044 double _phong_coef; // Saturacion especular, rango [0.0 - 1.0] 00045 double _coeficiente_de_reflexion; 00046 BOOLEAN _doble_cara; 00047 public: 00048 MATERIAL(); 00049 00050 int codigo(void); 00051 char *nombre(void); 00052 BOOLEAN doble_cara(void); 00053 COLOR ambiente(void); 00054 COLOR difusa(void); 00055 COLOR emision(void); 00056 COLOR especular(void); 00057 double phong_exp(void); 00058 double phong_coef(void); 00059 double reflexion(void); 00060 void set_nombre(char *n); 00061 void set_doble_cara(BOOLEAN c); 00062 void set_ambiente(COLOR a); 00063 void set_difusa(COLOR d); 00064 void set_emision(COLOR e); 00065 void set_especular(COLOR e); 00066 void set_phong_exp(double e); 00067 void set_phong_coef(double c); 00068 void set_transparencia(double t); 00069 void set_reflexion(double r); 00070 BOOLEAN leer(TOKENIZADOR *Sabiondo); 00071 #ifdef GL_ENABLED 00072 void activar_gl(void); 00073 #endif 00074 void activar_povray(FILE *fd); 00075 void activar_vrml(FILE *fd); 00076 }; 00077 00078 #endif // __MATERIAL__ 00079 00080 extern LISTA <MATERIAL *> LOS_materiales; 00081 extern BOOLEAN leer_materiales(char *archivo); 00082 00083 //=========================================================================== 00084 //= EOF = 00085 //=========================================================================== 00086