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

Referencia de la Clase BSP_2D

Esta clase representa un modelo "simple" (*) de interiores de solidos rigidos basados por la frontera (BREP's). Más...

#include <bsp_2d.h>

Diagrama de herencias de BSP_2D

Inheritance graph
[leyenda]
Diagrama de colaboración para BSP_2D:

Collaboration graph
[leyenda]
Lista de todos los miembros.

Métodos públicos

 BSP_2D ()
virtual ~BSP_2D ()
BOOLEAN importe_wadlevel (WAD_DATABASE *w, int id_nivel)
 Importa su estructura completa a partir de un nivel en formato WAD de IdSoftware.

void anexar_textura (IMAGEN *img)
int clasificar_punto (VECTOR p)
GEOMETRIAcrear_copia (void)
 En este metodo se define el comportamiento por defecto de la creacion de copias de geometrias.

void pintar_gl (CALIDAD_VISUAL *Calidad, MATERIAL *Material, CAMARA *Camara)
 Este metodo establece las configuraciones OpenGL necesarias para cumplir con los requerimientos de calidad solicitados.

void pintar_bsp (CALIDAD_VISUAL *Calidad, MATERIAL *Material, CAMARA *Camara)
 Este metodo establece las configuraciones OpenGL necesarias para cumplir con los requerimientos de calidad solicitados.

void pintar_povray (FILE *fd)
void pintar_aqz (FILE *fd)
double altura (double x, double y)
 Recibe una coordenada EN METROS, y retorna la altura del piso (tambien en metros) en esa parte dentro del mundo.


Métodos privados

void pintar_gl_3D (CALIDAD_VISUAL *Calidad)
 Este es un servicio privado para los algoritmos de visualizacion en modo 3D.

void pintar_gl_3D_wireframe (CALIDAD_VISUAL *Calidad)
 Este es un servicio privado para los algoritmos de visualizacion en modo 3D.

void activar_calidad (CALIDAD_VISUAL *Calidad, MATERIAL *Material)
 Este es un servicio privado para los algoritmos de visualizacion en modo 3D.

void mover (_BSP2D_VERTICEi delta)
int deme_flat (char *nombre)
 Este es un servicio para las sub-estructuras de la representacion BSP (en particular para la clase _BSP2D_SECTOR), y es considerado un servicio de persistencia en cuanto hace parte de las rutinas de importacion del formato WAD.

int deme_textura (char *nombre)
 Este es un servicio para las sub-estructuras de la representacion BSP (en particular para la clase _BSP2D_PARED), y es considerado un servicio de persistencia en cuanto hace parte de las rutinas de importacion del formato WAD.


Atributos privados

WAD_DATABASEdatos_wad
PALETA paleta_para_texturas
LISTA< IMAGEN * > flats
LISTA< IMAGEN * > sprites
LISTA< char * > nombres_flats
LISTA< char * > nombres_sprites
_BSP2D_VERTICEi min
_BSP2D_VERTICEi max
long int num_vertices
_BSP2D_VERTICEiVertices
long int num_arcos
_BSP2D_ARCOArcos
long int num_paredes
_BSP2D_PAREDParedes
long int num_segmentos
_BSP2D_SEGMENTOiSegmentos
long int num_sectores
_BSP2D_SECTORSectores
long int num_hojas
_BSP2D_HOJAHojas
long int num_nodos
_BSP2D_NODONodos
_BSP2D_NODORaiz

Amigas

class _BSP2D_ARCO
class _BSP2D_SECTOR
class _BSP2D_SEGMENTOi
class _BSP2D_HOJA
class _BSP2D_NODO
class _BSP2D_PARED

Descripción detallada

Esta clase representa un modelo "simple" (*) de interiores de solidos rigidos basados por la frontera (BREP's).

Esta orientada a representar espacios arquitectonicos, y es basicamente compatible con los niveles WAD de juego de IdSoftware (i.e. Doom, Doom II, Heretic, etc.).

El modelo consiste en un arbol de particion binaria (Binary Search Particion Tree), o "BSP-Tree" (ver "Computer Graphics, Principles and Practice" de Foley o "An introduction to solid modeling" de Martti Mantyla). Las hojas del arbol son "sectores" (volumenes que son prismas rectos de base poligonal convexa), aqui llamados "_BSP2D_HOJA". Los nodos intermedios del arbol ordenan los sectores, de tal manera que una coordenada dada pueda localizarse rapidamente mediante el uso de mini-max's. Para mayor informacion, remitirse a la documentacion "The Unofficial DOOM specs" de Matthew S Fell (msfell@aol.com).

Definición en la línea 361 del archivo bsp_2d.h.


Documentación del constructor y destructor

BSP_2D::BSP_2D  ) 
 

Definición en la línea 1451 del archivo bsp_2d.C.

References Arcos, datos_wad, Hojas, max, min, Nodos, num_arcos, num_hojas, num_nodos, num_paredes, num_sectores, num_segmentos, num_vertices, Paredes, Raiz, Sectores, Segmentos, Vertices, _BSP2D_VERTICEi::x, y _BSP2D_VERTICEi::y.

BSP_2D::~BSP_2D  )  [virtual]
 

Definición en la línea 1471 del archivo bsp_2d.C.


Documentación de las funciones miembro

void BSP_2D::activar_calidad CALIDAD_VISUAL Calidad,
MATERIAL Material
[private]
 

Este es un servicio privado para los algoritmos de visualizacion en modo 3D.

Configura OpenGL y algunas variables especiales para cumplir con los requerimientos de calidad solicitados cuando se usan las operaciones de pintar en modo 3D.

Definición en la línea 1813 del archivo bsp_2d.C.

References MATERIAL::activar_gl(), PALETA::activar_gl(), CALIDAD_VISUAL::calidad_caras, CALIDAD_VISUAL::con_textura, CVC_CONSTANTE, CVC_SHADE, paleta_para_texturas, PRIMITIVA_cuadros, y PRIMITIVA_triangulos.

Referenciado por pintar_bsp(), y pintar_gl().

Here is the call graph for this function:

double BSP_2D::altura double  x,
double  y
 

Recibe una coordenada EN METROS, y retorna la altura del piso (tambien en metros) en esa parte dentro del mundo.

Definición en la línea 1496 del archivo bsp_2d.C.

References _BSP2D_SECTOR::altura(), altura(), num_sectores, y Sectores.

Referenciado por altura().

Here is the call graph for this function:

void BSP_2D::anexar_textura IMAGEN img  )  [virtual]
 

Implements GEOMETRIA_3D.

Definición en la línea 1514 del archivo bsp_2d.C.

int BSP_2D::clasificar_punto VECTOR  p  )  [virtual]
 

Implements GEOMETRIA_3D.

Definición en la línea 1521 del archivo bsp_2d.C.

GEOMETRIA * BSP_2D::crear_copia void   )  [virtual]
 

En este metodo se define el comportamiento por defecto de la creacion de copias de geometrias.

Notese que como el metodo es virtual, puede ser redefinido por las clases que hereden de GEOMETRIA.

Implements GEOMETRIA_3D.

Definición en la línea 1530 del archivo bsp_2d.C.

int BSP_2D::deme_flat char *  nombre  )  [private]
 

Este es un servicio para las sub-estructuras de la representacion BSP (en particular para la clase _BSP2D_SECTOR), y es considerado un servicio de persistencia en cuanto hace parte de las rutinas de importacion del formato WAD.

Dada una cadena de caracteres con el nombre de una textura flat (del directorio WAD), este metodo retorna el sub-indice de la lista flats para esa textura.

Este metodo se encarga de crear la imagen y anexarla a la lista flats si la imagen no existe.

Definición en la línea 1676 del archivo bsp_2d.C.

References LISTA< IMAGEN * >::anx(), LISTA< char * >::anx(), datos_wad, WAD_DATABASE::fd, flats, IMAGEN_PAL::importar_wadflat(), WAD_DATABASE::localice_flat_por_nombre(), nombres_flats, y LISTA< char * >::tam().

Referenciado por _BSP2D_SECTOR::importe_wad().

Here is the call graph for this function:

int BSP_2D::deme_textura char *  nombre  )  [private]
 

Este es un servicio para las sub-estructuras de la representacion BSP (en particular para la clase _BSP2D_PARED), y es considerado un servicio de persistencia en cuanto hace parte de las rutinas de importacion del formato WAD.

Dada una cadena de caracteres con el nombre de una textura sprite (del directorio WAD), este metodo retorna el sub-indice de la lista flats para esa textura.

Este metodo se encarga de crear la imagen y anexarla a la lista sprites si la imagen no existe.

Definición en la línea 1723 del archivo bsp_2d.C.

References LISTA< IMAGEN * >::anx(), LISTA< char * >::anx(), datos_wad, WAD_DATABASE::fd, IMAGEN_PAL::importar_wadsprite(), IMAGEN_PAL::init(), WAD_DATABASE::localice_imagen_por_nombre(), WAD_DATABASE::localice_textura_por_nombre(), nombres_sprites, IMAGEN_PAL::pegar_subimagen(), sprites, WAD_DATABASE::tabla_pname, y LISTA< char * >::tam().

Referenciado por _BSP2D_PARED::importe_wad().

Here is the call graph for this function:

BOOLEAN BSP_2D::importe_wadlevel WAD_DATABASE w,
int  id_nivel
 

Importa su estructura completa a partir de un nivel en formato WAD de IdSoftware.

Notese que se maneja un esquema de estructuras de datos precalculadas, que se cargan en arreglos dinamicos en memoria y posteriormente se referencian por otras estructuras. Notese tambien que se utiliza siempre el mismo esquema de carga de estructuras precalculadas. La clave para no perderse en esta funcion es tener en cuenta la similitud de nombres.

Definición en la línea 1540 del archivo bsp_2d.C.

References PALETA::aplique_gamma(), Arcos, _BSP2D_PARED::calcule_normal(), datos_wad, WAD_DATABASE::fd, Hojas, PALETA::importar_raw256(), _BSP2D_NODO::importe_wad(), _BSP2D_HOJA::importe_wad(), _BSP2D_SECTOR::importe_wad(), _BSP2D_SEGMENTOi::importe_wad(), _BSP2D_ARCO::importe_wad(), _BSP2D_PARED::importe_wad(), _BSP2D_ELEMENTO::init(), WAD_LEVEL::Linedefs, WAD_DATABASE::localice_paleta(), max, min, _BSP2D_NODO::mover(), mover(), WAD_DATABASE::niveles, WAD_LEVEL::Nodes, Nodos, num_arcos, num_hojas, num_nodos, num_paredes, num_sectores, num_segmentos, num_vertices, WAD_ENTITY::offset, paleta_para_texturas, Paredes, Raiz, Sectores, WAD_LEVEL::Sectors, Segmentos, WAD_LEVEL::Segs, WAD_LEVEL::Sidedefs, WAD_ENTITY::size, WAD_LEVEL::Ssectors, _BSP2D_SECTOR::triangularize(), WAD_LEVEL::Vertexes, Vertices, WAD_LEVEL::wad_fd, _BSP2D_VERTICEi::x, y _BSP2D_VERTICEi::y.

Here is the call graph for this function:

void BSP_2D::mover _BSP2D_VERTICEi  delta  )  [private]
 

Definición en la línea 1477 del archivo bsp_2d.C.

References max, min, num_vertices, Vertices, _BSP2D_VERTICEi::x, y _BSP2D_VERTICEi::y.

Referenciado por importe_wadlevel().

void BSP_2D::pintar_aqz FILE *  fd  )  [virtual]
 

Implements GEOMETRIA_3D.

Definición en la línea 1989 del archivo bsp_2d.C.

void BSP_2D::pintar_bsp CALIDAD_VISUAL Calidad,
MATERIAL Material,
CAMARA Camara
 

Este metodo establece las configuraciones OpenGL necesarias para cumplir con los requerimientos de calidad solicitados.

Posteriormente invoca a pintar_gl_3D, que hace todo el trabajo de construccion de primitivas.

IMPORTANTE: Notese que esta es una de dos versiones que hacen lo mismo. La diferencia es que esta version usa la estructura BSP para pintar, teniendo en cuenta la posicion de la camara, solo los poligonos que sean necesarios (es la version "rapida"). Por otro lado, la otra version pinta indiscriminadamente todos los poligonos de la representacion BREP, sin hacer uso de la estructura BSP.

Definición en la línea 1934 del archivo bsp_2d.C.

References activar_calidad(), BOOLEAN, CALIDAD_VISUAL::con_bordes, CALIDAD_VISUAL::con_caras, _BSP2D_SECTOR::con_paredes, MATRIZ_4x4::exportar_angulos_euler(), MATRIZ_4x4::importar_quaternion(), _BSP2D_SECTOR::marcado, NUM_poligonos, num_sectores, CAMARA::orientacion(), _BSP2D_NODO::pintar_gl_2D(), _BSP2D_SECTOR::pintar_gl_3D(), _BSP2D_NODO::pintar_gl_3D(), pintar_gl_3D_wireframe(), CAMARA::posicion(), Raiz, MATRIZ_4x4::rotacion_eje(), y Sectores.

Here is the call graph for this function:

void BSP_2D::pintar_gl CALIDAD_VISUAL Calidad,
MATERIAL Material,
CAMARA Camara
[virtual]
 

Este metodo establece las configuraciones OpenGL necesarias para cumplir con los requerimientos de calidad solicitados.

Posteriormente invoca a pintar_gl_3D, que hace todo el trabajo de construccion de primitivas.

IMPORTANTE: Notese que esta es una de dos versiones que hacen lo mismo. La diferencia es que esta version pinta indiscriminadamente todos los poligonos de la representacion BREP, sin hacer uso de la estructura BSP (es la version "lenta"). Por otro lado, la otra version usa la estructura BSP para pintar, teniendo en cuenta la posicion de la camara, solo los poligonos que sean necesarios.

Implements GEOMETRIA_3D.

Definición en la línea 1902 del archivo bsp_2d.C.

References activar_calidad(), CALIDAD_VISUAL::con_bordes, CALIDAD_VISUAL::con_caras, _BSP2D_SECTOR::con_paredes, _BSP2D_SECTOR::marcado, num_sectores, pintar_gl_3D(), pintar_gl_3D_wireframe(), y Sectores.

Here is the call graph for this function:

void BSP_2D::pintar_gl_3D CALIDAD_VISUAL Calidad  )  [private]
 

Este es un servicio privado para los algoritmos de visualizacion en modo 3D.

Genera primitivas OpenGL para visualizar el modelo geometrico BREP mediante poligonos.

Esta operacion es util tanto en el modo de uso activo BSP como en el modo de generacion indiscriminada de todos los poligonos en el modelo BREP. Cumple con dos grandes funciones:

  • Pintar las paredes del modelo
  • Pintar los pisos y techos del modelo Notese que los pisos y techos se pintan por sectores, y los sectores tienen una marca que activa o desactiva su pintada. En el modo indiscriminado todos los sectores tienen la marca activa. En el modo BSP solo se activan los sectores que poseen paredes pintadas en el proceso BSP. Fijese que toda esa funcionalidad se hace dentro de los sectores!

Definición en la línea 1873 del archivo bsp_2d.C.

References num_sectores, _BSP2D_SECTOR::pintar_gl_3D(), y Sectores.

Referenciado por pintar_gl(), y pintar_gl_3D_wireframe().

Here is the call graph for this function:

void BSP_2D::pintar_gl_3D_wireframe CALIDAD_VISUAL Calidad  )  [private]
 

Este es un servicio privado para los algoritmos de visualizacion en modo 3D.

Genera primitivas OpenGL para visualizar el modelo geometrico BREP en alambre (wireframe).

OJO: NO usa la estructura BSP. Debe estudiarse la posibilidad de activar el uso del arbol BSP en esta operacion.

Definición en la línea 1849 del archivo bsp_2d.C.

References _BSP2D_SECTOR::con_paredes, _BSP2D_SECTOR::marcado, num_sectores, pintar_gl_3D(), PRIMITIVA_cuadros, PRIMITIVA_triangulos, y Sectores.

Referenciado por pintar_bsp(), y pintar_gl().

Here is the call graph for this function:

void BSP_2D::pintar_povray FILE *  fd  )  [virtual]
 

Implements GEOMETRIA_3D.

Definición en la línea 1996 del archivo bsp_2d.C.


Documentación de las funciones relacionadas y clases amigas

friend class _BSP2D_ARCO [friend]
 

Definición en la línea 421 del archivo bsp_2d.h.

friend class _BSP2D_HOJA [friend]
 

Definición en la línea 424 del archivo bsp_2d.h.

friend class _BSP2D_NODO [friend]
 

Definición en la línea 425 del archivo bsp_2d.h.

friend class _BSP2D_PARED [friend]
 

Definición en la línea 426 del archivo bsp_2d.h.

friend class _BSP2D_SECTOR [friend]
 

Definición en la línea 422 del archivo bsp_2d.h.

friend class _BSP2D_SEGMENTOi [friend]
 

Definición en la línea 423 del archivo bsp_2d.h.


Documentación de los datos miembro

_BSP2D_ARCO* BSP_2D::Arcos [private]
 

Definición en la línea 402 del archivo bsp_2d.h.

Referenciado por BSP_2D(), _BSP2D_SEGMENTOi::importe_wad(), importe_wadlevel(), y _BSP2D_SEGMENTOi::pintar_gl_3D().

WAD_DATABASE* BSP_2D::datos_wad [private]
 

Definición en la línea 386 del archivo bsp_2d.h.

Referenciado por BSP_2D(), deme_flat(), deme_textura(), y importe_wadlevel().

LISTA<IMAGEN *> BSP_2D::flats [private]
 

Definición en la línea 390 del archivo bsp_2d.h.

Referenciado por deme_flat(), y _BSP2D_SECTOR::pintar_gl_3D().

_BSP2D_HOJA* BSP_2D::Hojas [private]
 

Definición en la línea 415 del archivo bsp_2d.h.

Referenciado por BSP_2D(), _BSP2D_NODO::importe_wad(), y importe_wadlevel().

_BSP2D_VERTICEi BSP_2D::max [private]
 

Definición en la línea 395 del archivo bsp_2d.h.

Referenciado por BSP_2D(), importe_wadlevel(), y mover().

_BSP2D_VERTICEi BSP_2D::min [private]
 

Definición en la línea 394 del archivo bsp_2d.h.

Referenciado por BSP_2D(), importe_wadlevel(), y mover().

_BSP2D_NODO* BSP_2D::Nodos [private]
 

Definición en la línea 417 del archivo bsp_2d.h.

Referenciado por BSP_2D(), _BSP2D_NODO::importe_wad(), y importe_wadlevel().

LISTA<char *> BSP_2D::nombres_flats [private]
 

Definición en la línea 392 del archivo bsp_2d.h.

Referenciado por deme_flat().

LISTA<char *> BSP_2D::nombres_sprites [private]
 

Definición en la línea 393 del archivo bsp_2d.h.

Referenciado por deme_textura().

long int BSP_2D::num_arcos [private]
 

Definición en la línea 401 del archivo bsp_2d.h.

Referenciado por BSP_2D(), y importe_wadlevel().

long int BSP_2D::num_hojas [private]
 

Definición en la línea 414 del archivo bsp_2d.h.

Referenciado por BSP_2D(), y importe_wadlevel().

long int BSP_2D::num_nodos [private]
 

Definición en la línea 416 del archivo bsp_2d.h.

Referenciado por BSP_2D(), y importe_wadlevel().

long int BSP_2D::num_paredes [private]
 

Definición en la línea 404 del archivo bsp_2d.h.

Referenciado por BSP_2D(), _BSP2D_ARCO::importe_wad(), importe_wadlevel(), _BSP2D_SECTOR::pintar_gl_3D(), y _BSP2D_SECTOR::triangularize().

long int BSP_2D::num_sectores [private]
 

Definición en la línea 410 del archivo bsp_2d.h.

Referenciado por altura(), BSP_2D(), importe_wadlevel(), pintar_bsp(), pintar_gl(), pintar_gl_3D(), y pintar_gl_3D_wireframe().

long int BSP_2D::num_segmentos [private]
 

Definición en la línea 407 del archivo bsp_2d.h.

Referenciado por BSP_2D(), importe_wadlevel(), _BSP2D_HOJA::pintar_gl_2D(), y _BSP2D_HOJA::pintar_gl_3D().

long int BSP_2D::num_vertices [private]
 

Definición en la línea 398 del archivo bsp_2d.h.

Referenciado por BSP_2D(), importe_wadlevel(), mover(), y _BSP2D_SEGMENTOi::pintar_gl_2D().

PALETA BSP_2D::paleta_para_texturas [private]
 

Definición en la línea 389 del archivo bsp_2d.h.

Referenciado por activar_calidad(), y importe_wadlevel().

_BSP2D_PARED* BSP_2D::Paredes [private]
 

Definición en la línea 405 del archivo bsp_2d.h.

Referenciado por BSP_2D(), _BSP2D_ARCO::importe_wad(), importe_wadlevel(), _BSP2D_SECTOR::pintar_gl_3D(), y _BSP2D_SECTOR::triangularize().

_BSP2D_NODO* BSP_2D::Raiz [private]
 

Definición en la línea 418 del archivo bsp_2d.h.

Referenciado por BSP_2D(), importe_wadlevel(), y pintar_bsp().

_BSP2D_SECTOR* BSP_2D::Sectores [private]
 

Definición en la línea 411 del archivo bsp_2d.h.

Referenciado por altura(), _BSP2D_HOJA::altura_cuadro(), BSP_2D(), _BSP2D_PARED::calcule_normal(), importe_wadlevel(), pintar_bsp(), pintar_gl(), pintar_gl_3D(), _BSP2D_SEGMENTOi::pintar_gl_3D(), y pintar_gl_3D_wireframe().

_BSP2D_SEGMENTOi* BSP_2D::Segmentos [private]
 

Definición en la línea 408 del archivo bsp_2d.h.

Referenciado por _BSP2D_HOJA::altura_cuadro(), BSP_2D(), importe_wadlevel(), _BSP2D_HOJA::pintar_gl_2D(), y _BSP2D_HOJA::pintar_gl_3D().

LISTA<IMAGEN *> BSP_2D::sprites [private]
 

Definición en la línea 391 del archivo bsp_2d.h.

Referenciado por deme_textura(), y _BSP2D_SEGMENTOi::pintar_gl_3D().

_BSP2D_VERTICEi* BSP_2D::Vertices [private]
 

Definición en la línea 399 del archivo bsp_2d.h.

Referenciado por _BSP2D_SEGMENTOi::anexe_vertices(), BSP_2D(), _BSP2D_PARED::calcule_normal(), importe_wadlevel(), mover(), _BSP2D_SEGMENTOi::pintar_gl_2D(), _BSP2D_SEGMENTOi::pintar_gl_3D(), _BSP2D_ARCO::pintar_gl_3D(), y _BSP2D_SECTOR::triangularize().


La documentación para esta clase fué generada a partir de los siguientes archivos:
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.