Página principal | Jerarquía de la clase | Lista alfabética | Lista de componentes | Lista de archivos | Miembros de las clases | Archivos de los miembros | Páginas relacionadas

geometria.h

Ir a la documentación de este archivo.
00001 //===========================================================================
00002 //= geometria                                                 Julio de 1998 =
00003 //=-------------------------------------------------------------------------=
00004 //= Definiciones basicas para las clases de geometria                       =
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 __GEOMETRIA__
00023 #define __GEOMETRIA__
00024 #include "jed_defs.h"  // Incluir antes que nada, en ese modulo se definen 
00025                        // aspectos importantes para la portabilidad del sistema
00026 
00027 #include "jed_gl.h"
00028 #include "toolkits/media/jed_img.h"
00029 #include "toolkits/entorno/camara.h"
00030 #include "toolkits/entorno/calidad_v.h"
00031 #include "toolkits/entorno/material.h"
00032 #include "matriz4.h"
00033 
00034 #if PLATAFORMA != ANSI
00035     #include "jed_gl.h"
00036     #ifdef GLTT_ENABLED
00037         #include "toolkits/util/gl_fonts.h"
00038     #endif
00039 #endif
00040 
00041 //===========================================================================
00042 //= Declaracion de la clase GEOMETRIA                                       =
00043 //===========================================================================
00044 
00045 class GEOMETRIA
00046 {
00047   public:
00048     //- Operaciones de construccion ----------------------------------------
00049     virtual GEOMETRIA *crear_copia(void);
00050     virtual void anexar_textura(IMAGEN *img) = 0;
00051 
00052     //- Operaciones geometricas basicas ------------------------------------
00053     virtual int clasificar_punto(VECTOR p) = 0;
00054     virtual void minmax(VECTOR *min, VECTOR *max);
00055     virtual double interseccion(RAYO *Rayo, VECTOR &punto, VECTOR &normal);
00056 
00057     //- Operaciones de visualizacion ---------------------------------------
00058 #ifdef GL_ENABLED
00059     virtual void
00060     pintar_gl(CALIDAD_VISUAL *Calidad, MATERIAL* Material, CAMARA *Camara) = 0;
00061 #endif
00062     virtual void pintar_povray(FILE *fd) = 0;
00063     virtual void pintar_aqz(FILE *fd) = 0;
00064 };
00065 
00066 class OBJETO_RAYABLE 
00074 {
00075   public:
00076     GEOMETRIA *Geometria;
00077 
00078     COLOR ambiente;
00079     COLOR difusa;
00080     COLOR especular;
00081     double phong_exp;  // En el rango [0 - 128]
00082     double phong_coef; // Saturacion especular, rango [0.0 - 1.0]
00083     double coeficiente_de_reflexion; // En el rango [0.0 - 1.0]
00084 
00085     VECTOR posicion;  // Transformaciones geometricas
00086     MATRIZ_4x4 R;
00087     MATRIZ_4x4 R_i;
00088 };
00089 
00090 //===========================================================================
00091 //= Metodos inline de la clase GEOMETRIA                                    =
00092 //===========================================================================
00093 
00094 inline double
00095 GEOMETRIA::interseccion(RAYO * /*Rayo*/, VECTOR & /*punto*/,
00096                         VECTOR & /*normal*/)
00103 {
00104     return 0;
00105 }
00106 
00107 //===========================================================================
00108 //= Declaracion de otras interfaces de la jerarquia de GEOMETRIAs           =
00109 //===========================================================================
00110 
00111 class GEOMETRIA_3D : public GEOMETRIA {
00112   public:
00113 #ifdef GL_ENABLED
00114     virtual void
00115     pintar_gl(CALIDAD_VISUAL *Calidad, MATERIAL* Material, CAMARA *Camara) = 0;
00116 #endif
00117     virtual void pintar_povray(FILE *fd) = 0;
00118     virtual void pintar_aqz(FILE *fd) = 0;
00119     virtual void anexar_textura(IMAGEN *img) = 0;
00120     virtual int clasificar_punto(VECTOR p) = 0;
00121     virtual GEOMETRIA *crear_copia(void) = 0;
00122     virtual double interseccion(RAYO *Rayo, VECTOR &punto, VECTOR &normal);
00123 };
00124 
00125 inline double
00126 GEOMETRIA_3D::interseccion(RAYO * /*Rayo*/, 
00127                            VECTOR & /*punto*/, VECTOR &/*normal*/)
00134 {
00135     return 0;
00136 }
00137 
00138 class PRIMITIVA_GEOMETRICA : public GEOMETRIA_3D
00139 {
00140   public:
00141 #ifdef GL_ENABLED
00142     virtual void
00143     pintar_gl(CALIDAD_VISUAL *Calidad, MATERIAL* Material, CAMARA *Camara) = 0;
00144 #endif
00145     virtual void pintar_povray(FILE *fd) = 0;
00146     virtual void pintar_aqz(FILE *fd) = 0;
00147     virtual void anexar_textura(IMAGEN *img) = 0;
00148     virtual int clasificar_punto(VECTOR p) = 0;
00149     virtual GEOMETRIA *crear_copia(void) = 0;
00150 };
00151 
00152 //===========================================================================
00153 //= Declaraciones externas de la jerarquia de GEOMETRIAs                    =
00154 //===========================================================================
00155 
00156 #ifdef GL_ENABLED
00157   extern GLUquadricObj *TEXTURA_glu_global;
00158 #endif // GL_ENABLED
00159 
00160 #ifndef VEL_ROSITA
00161     #include "toolkits/geom/esfera.h"
00162     #include "toolkits/geom/cilindro.h"
00163     #include "toolkits/geom/cubo.h"
00164     #include "toolkits/geom/paralele.h"
00165     #include "toolkits/geom/texto_3d.h"
00166     #include "toolkits/geom/flecha.h"
00167     #include "toolkits/geom/bsp_2d.h"
00168     #include "toolkits/geom/terreno.h"
00169     #include "toolkits/geom/terreno_lod.h"
00170     #include "toolkits/geom/planta_f.h"
00171     #include "toolkits/geom/octree.h"
00172 #endif
00173 
00174 #endif // __GEOMETRIA__
00175 
00176 //===========================================================================
00177 //= EOF                                                                     =
00178 //===========================================================================
00179 

Este archivo HTML ha sido generado automáticamente a partir del código fuente AQUYNZA. NO LO EDITE. Para mayor información contacte al autor.