00001 //=========================================================================== 00002 //= raytrace.h Marzo de 1999 = 00003 //=-------------------------------------------------------------------------= 00004 //= Especifica el raytracer "criollo" que genera IMAGENes de una manera = 00005 //= generica (independiente del disenno de la aplicacion), basandose en los = 00006 //= elementos basicos GEOMETRIA, LUZ y MATERIAL del framework AQUYNZA. = 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 __RAYTRACER_CRIOLLO__ 00025 #define __RAYTRACER_CRIOLLO__ 00026 00027 #include "jed_defs.h" // Incluir antes que nada, en ese modulo se definen 00028 // aspectos importantes para la portabilidad del sistema 00029 #include "matriz4.h" 00030 #include "toolkits/geom/geometria.h" 00031 #include "toolkits/entorno/rayo.h" 00032 #include "toolkits/entorno/luz.h" 00033 #include "toolkits/entorno/camara.h" 00034 #include "arreglo.h" 00035 00036 #define MAXRECURSELEVEL 2 // OJO: Esto deberia ser algo configurable! 00037 00038 class RAYTRACER_CRIOLLO { 00039 private: 00040 // En un futuro, aqui ira la configuracion del raytracer 00041 00042 // Informacion de estado de las operaciones 00043 unsigned int nivel_de_recursion; 00044 00045 // Operaciones 00046 COLOR 00047 modelo_de_iluminacion(const OBJETO_RAYABLE *Objeto, 00048 ARREGLO <OBJETO_RAYABLE *> &objetos, RAYO *Rayo, 00049 const VECTOR &punto, VECTOR &normal, LUZ **LUces); 00050 COLOR 00051 seguimiento_rayo(RAYO *Rayo, ARREGLO<OBJETO_RAYABLE *> &objetos, 00052 LUZ **LUces); 00053 00054 public: 00055 RAYTRACER_CRIOLLO(); 00056 ~RAYTRACER_CRIOLLO(); 00057 00058 void 00059 ejecutar(IMAGEN_RGB *Resultado, 00060 ARREGLO<OBJETO_RAYABLE *> &arr_objetos, LUZ **LUces, 00061 CAMARA *Camara); 00062 }; 00063 00064 //=========================================================================== 00065 //= Metodos inline de la clase RAYTRACER_CRIOLLO = 00066 //=========================================================================== 00067 00068 #endif // __RAYTRACER_CRIOLLO__ 00069 00070 //=========================================================================== 00071 //= EOF = 00072 //=========================================================================== 00073