00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __GEOMETRIA__
00023 #define __GEOMETRIA__
00024 #include "jed_defs.h"
00025
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
00043
00044
00045 class GEOMETRIA
00046 {
00047 public:
00048
00049 virtual GEOMETRIA *crear_copia(void);
00050 virtual void anexar_textura(IMAGEN *img) = 0;
00051
00052
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
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;
00082 double phong_coef;
00083 double coeficiente_de_reflexion;
00084
00085 VECTOR posicion;
00086 MATRIZ_4x4 R;
00087 MATRIZ_4x4 R_i;
00088 };
00089
00090
00091
00092
00093
00094 inline double
00095 GEOMETRIA::interseccion(RAYO * , VECTOR & ,
00096 VECTOR & )
00103 {
00104 return 0;
00105 }
00106
00107
00108
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 * ,
00127 VECTOR & , VECTOR &)
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
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
00178
00179