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 TERRENO_LOD

#include <terreno_lod.h>

Diagrama de herencias de TERRENO_LOD

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

Collaboration graph
[leyenda]
Lista de todos los miembros.

Métodos públicos

 TERRENO_LOD (GLOBAL_DEM *Fuente, long int origen_x, long int origen_y, long int xtam, long int ytam, double escala, double exageracion)
 OJO: Esos "1000" que hay por ahi deberian ser una constante ANCHO_CELDA_TERRENO_LOD o algo asi.

virtual ~TERRENO_LOD ()
double interseccion (RAYO *Rayo, VECTOR &punto, VECTOR &normal)
 Este metodo realiza su tarea en dos etapas: - Primero, determina las celdas por las cuales el rayo puede pasar (busqueda).

void anexar_textura (IMAGEN *img)
int clasificar_punto (VECTOR p)
 Dado un punto, se retorna: -1: si el punto esta fuera de esta geometria 0: si el punto esta en la superficie (frontera) de la geometria 1: si el punto esta dentro de la geometria.

virtual GEOMETRIAcrear_copia (void)
 OJO: Esto no funciona.

void minmax (VECTOR *min, VECTOR *max)
void pintar_gl (CALIDAD_VISUAL *Calidad, MATERIAL *Material, CAMARA *Camara)
void pintar_povray (FILE *fd)
void pintar_aqz (FILE *fd)
BOOLEAN seleccionar (RAYO *Rayito, int *i, int *j)
double index2coord_x (int i)
 Esta es la funcion inversa de `coord2index_x`.

double index2coord_y (int j)
 Esta es la funcion inversa de `coord2index_x`.


Métodos privados

void pintar_tiras_gl (void)
 Este algoritmo se deriva del macro algoritmo publicado en "Real-time continous level of detail rendering of height fields", Lindstrom/Hodges/Koller/Faust/Ribarsky/Turner, ACM Siggraph computer graphics 1996, pg.

void pintar_tirasv_gl (void)
VECTOR calcule_subnormal (int x1, int y1, int x2, int y2, int x3, int y3)
 Calcula la normal de superficie para el triangulo definido por los vertices (x1, y1), (x2, y2), (x3, y3) en el espacio del terreno.

VECTOR calcule_normal (int x, int y)
 Dada la organizacion matricial del terreno, de tamanno [x_tam * y_tam], se calcula la normal para el vertice (i, j) teniendo en cuenta las consideraciones presentadas en la estructura precalculada `normal_pattern`.

double interseccion_celda (RAYO *Rayo, VECTOR &punto, VECTOR &normal, int x, int y)
 Este metodo implementa la operacion geometrica de interseccion, pero solo para los dos triangulos que corresponden a la celda (x, y) del terreno.

int coord2index_x (double x_coord)
 Este metodo recibe la componente x de una coordenada global (coordenadas del mundo AQUYNZA), y retorna el indice entero correspondiente a la i-esima columna de la malla 2D que representa el terreno.

int coord2index_y (double y_coord)
 Este metodo recibe la componente y de una coordenada global (coordenadas del mundo AQUYNZA), y retorna el indice entero correspondiente a la i-esima fila de la malla 2D que representa el terreno.

void pintar_cuadrante_gl (COORDENADA_2D l, COORDENADA_2D t, COORDENADA_2D r, int nivel)
 Este algoritmo se deriva del macro algoritmo publicado en "Real-time continous level of detail rendering of height fields", Lindstrom/Hodges/Koller/Faust/Ribarsky/Turner, ACM Siggraph computer graphics 1996, pg.

void toggle_ptr (void)
BOOLEAN elem_buffer (COORDENADA_2D &o)
void consultar_padres (COORDENADA_2D *h, COORDENADA_2D *p1, COORDENADA_2D *p2, int *i1, int *i2, int nivel)
 Esta operacion implementa la primitiva "Parent" del algoritmo implementado de LOD.

void update_vertex (COORDENADA_2D *v)
 Esta operacion implementa la funcion "UPDATE-VERTEX" del algoritmo implementado de LOD.

void notify (COORDENADA_2D *v, int child, BOOLEAN state)
 Esta operacion implementa la funcion "NOTIFY" del algoritmo implementado de LOD.


Atributos privados

COORDENADA_2D buffer [2]
int nivel_anterior
int ptr
int dimension
IMAGENimagen
long int _x_tam
long int _y_tam
long int vertices_tam
VERTICE_GLvertices_arr
_TERRENO_LOD_ATRIBUTO_VERTICEatributos_arr
VECTOR _min
VECTOR _max
double _escala
double _factor_exageracion
LISTA< int > arr_debug_x
LISTA< int > arr_debug_y
COLOR color_debug

Documentación del constructor y destructor

TERRENO_LOD::TERRENO_LOD GLOBAL_DEM Fuente,
long int  origen_x,
long int  origen_y,
long int  xtam,
long int  ytam,
double  escala,
double  exageracion
 

OJO: Esos "1000" que hay por ahi deberian ser una constante ANCHO_CELDA_TERRENO_LOD o algo asi.

Definición en la línea 166 del archivo terreno_lod.C.

References _escala, _factor_exageracion, _max, _min, _x_tam, _y_tam, atributos_arr, calcule_normal(), dimension, GLOBAL_DEM::exportar_vertices(), imagen, nivel_anterior, VERTICE_GL::nx, VERTICE_GL::ny, VERTICE_GL::nz, potencia2(), ptr, vertices_arr, vertices_tam, VECTOR::x, VERTICE_GL::x, VECTOR::y, VERTICE_GL::y, VECTOR::z, y VERTICE_GL::z.

Referenciado por crear_copia().

Here is the call graph for this function:

TERRENO_LOD::~TERRENO_LOD  )  [virtual]
 

Definición en la línea 240 del archivo terreno_lod.C.

References imagen, y vertices_arr.


Documentación de las funciones miembro

void TERRENO_LOD::anexar_textura IMAGEN img  )  [virtual]
 

Implements GEOMETRIA.

Definición en la línea 332 del archivo terreno_lod.C.

References imagen.

VECTOR TERRENO_LOD::calcule_normal int  x,
int  y
[private]
 

Dada la organizacion matricial del terreno, de tamanno [x_tam * y_tam], se calcula la normal para el vertice (i, j) teniendo en cuenta las consideraciones presentadas en la estructura precalculada `normal_pattern`.

Definición en la línea 284 del archivo terreno_lod.C.

References _x_tam, _y_tam, calcule_subnormal(), lados_primarios, lados_secundarios, normal_pattern, VECTOR::normalizar(), VECTOR::x, VECTOR::y, y VECTOR::z.

Referenciado por TERRENO_LOD().

Here is the call graph for this function:

VECTOR TERRENO_LOD::calcule_subnormal int  x1,
int  y1,
int  x2,
int  y2,
int  x3,
int  y3
[private]
 

Calcula la normal de superficie para el triangulo definido por los vertices (x1, y1), (x2, y2), (x3, y3) en el espacio del terreno.

Definición en la línea 249 del archivo terreno_lod.C.

References VECTOR::normalizar(), VECTOR::producto_cruz(), VECTOR::x, VECTOR::y, y VECTOR::z.

Referenciado por calcule_normal().

Here is the call graph for this function:

int TERRENO_LOD::clasificar_punto VECTOR  p  )  [virtual]
 

Dado un punto, se retorna: -1: si el punto esta fuera de esta geometria 0: si el punto esta en la superficie (frontera) de la geometria 1: si el punto esta dentro de la geometria.

Implements GEOMETRIA.

Definición en la línea 341 del archivo terreno_lod.C.

References VECTOR::x, VECTOR::y, y VECTOR::z.

void TERRENO_LOD::consultar_padres COORDENADA_2D h,
COORDENADA_2D p1,
COORDENADA_2D p2,
int *  i1,
int *  i2,
int  nivel
[private]
 

Esta operacion implementa la primitiva "Parent" del algoritmo implementado de LOD.

Entrada: h: Vertice a quien se le estan consultando los dos padres. nivel: Siempre debe llamarse con un "1". Solo dentro de los llamados recursivos de este metodo se usan otros valores. Salida: p1: Vertice padre 1 p2: Vertice padre 2 i1: *h es el *i1-esimo hijo del padre *p1 i2: *h es el *i2-esimo hijo del padre *p2

Definición en la línea 485 del archivo terreno_lod.C.

References dimension, COORDENADA_2D::x, y COORDENADA_2D::y.

Referenciado por notify(), pintar_gl(), y update_vertex().

int TERRENO_LOD::coord2index_x double  x_coord  )  [inline, private]
 

Este metodo recibe la componente x de una coordenada global (coordenadas del mundo AQUYNZA), y retorna el indice entero correspondiente a la i-esima columna de la malla 2D que representa el terreno.

Definición en la línea 254 del archivo terreno_lod.h.

References _escala.

Referenciado por interseccion(), y seleccionar().

int TERRENO_LOD::coord2index_y double  y_coord  )  [inline, private]
 

Este metodo recibe la componente y de una coordenada global (coordenadas del mundo AQUYNZA), y retorna el indice entero correspondiente a la i-esima fila de la malla 2D que representa el terreno.

Definición en la línea 269 del archivo terreno_lod.h.

References _escala, y _y_tam.

Referenciado por interseccion(), y seleccionar().

GEOMETRIA * TERRENO_LOD::crear_copia void   )  [virtual]
 

OJO: Esto no funciona.

Reimplementado de GEOMETRIA.

Definición en la línea 869 del archivo terreno_lod.C.

References IMAGEN::copie(), imagen, y TERRENO_LOD().

Here is the call graph for this function:

BOOLEAN TERRENO_LOD::elem_buffer COORDENADA_2D o  )  [private]
 

Definición en la línea 375 del archivo terreno_lod.C.

References buffer.

Referenciado por pintar_cuadrante_gl().

double TERRENO_LOD::index2coord_x int  i  )  [inline]
 

Esta es la funcion inversa de `coord2index_x`.

Definición en la línea 285 del archivo terreno_lod.h.

References vertices_arr, y VERTICE_GL::x.

Referenciado por interseccion(), y interseccion_celda().

double TERRENO_LOD::index2coord_y int  j  )  [inline]
 

Esta es la funcion inversa de `coord2index_x`.

Definición en la línea 299 del archivo terreno_lod.h.

References _x_tam, y vertices_arr.

Referenciado por interseccion(), y interseccion_celda().

double TERRENO_LOD::interseccion RAYO Rayo,
VECTOR punto,
VECTOR normal
[inline, virtual]
 

Este metodo realiza su tarea en dos etapas: - Primero, determina las celdas por las cuales el rayo puede pasar (busqueda).

Esta etapa puede ser de tres tipos de situacion: si el rayo es paralelo a la direccion z, si la proyeccion del rayo en el plano del terreno posee una pendiente abs(m) <= 1 o si la pendiente de la proyeccion del rayo tiene una pendiente abs(m) > 1.

  • Luego, para las celdas encontradas, se prueba la interseccion rayo-triangulo, y se determina el resultado mas cercano.

Reimplementado de GEOMETRIA.

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

References _x_tam, _y_tam, LISTA< int >::anx(), arr_debug_x, arr_debug_y, COLOR::b, color_debug, coord2index_x(), coord2index_y(), RAYO::direccion, LISTA< int >::elim(), COLOR::g, index2coord_x(), index2coord_y(), interseccion_celda(), VECTOR::norma(), VECTOR::normalizar(), RAYO::origen, COLOR::r, LISTA< int >::tam(), VECTOR::x, VECTOR::y, y VECTOR::z.

Referenciado por seleccionar().

Here is the call graph for this function:

double TERRENO_LOD::interseccion_celda RAYO Rayo,
VECTOR punto,
VECTOR normal,
int  x,
int  y
[inline, private]
 

Este metodo implementa la operacion geometrica de interseccion, pero solo para los dos triangulos que corresponden a la celda (x, y) del terreno.

Notese que para los siguientes puntos, se tienen los dos triangulos definidos asi: A = (x, y) B--D B = (x, y+1) | /| C = (x+1, y) |/ | D = (x+1, y+1) A--C

T1 = DBA, T2 = ACD

Definición en la línea 313 del archivo terreno_lod.h.

References _x_tam, RAYO::direccion, index2coord_x(), index2coord_y(), VECTOR::normalizar(), RAYO::origen, VECTOR::producto_cruz(), VECTOR::producto_punto(), vertices_arr, VECTOR::x, VECTOR::y, y VECTOR::z.

Referenciado por interseccion().

Here is the call graph for this function:

void TERRENO_LOD::minmax VECTOR min,
VECTOR max
[virtual]
 

Reimplementado de GEOMETRIA.

Definición en la línea 362 del archivo terreno_lod.C.

References _max, _min, VECTOR::x, VECTOR::y, y VECTOR::z.

void TERRENO_LOD::notify COORDENADA_2D v,
int  child,
BOOLEAN  state
[private]
 

Esta operacion implementa la funcion "NOTIFY" del algoritmo implementado de LOD.

Definición en la línea 447 del archivo terreno_lod.C.

References consultar_padres().

Referenciado por update_vertex().

Here is the call graph for this function:

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

Implements GEOMETRIA.

Definición en la línea 852 del archivo terreno_lod.C.

void TERRENO_LOD::pintar_cuadrante_gl COORDENADA_2D  l,
COORDENADA_2D  t,
COORDENADA_2D  r,
int  nivel
[private]
 

Este algoritmo se deriva del macro algoritmo publicado en "Real-time continous level of detail rendering of height fields", Lindstrom/Hodges/Koller/Faust/Ribarsky/Turner, ACM Siggraph computer graphics 1996, pg.

109. y en comentarios se indican las lineas del macroalgoritmo original. (equivalente a `RENDER-QUADRANT`)

Definición en la línea 391 del archivo terreno_lod.C.

References buffer, elem_buffer(), nivel_anterior, ptr, y toggle_ptr().

Referenciado por pintar_tiras_gl().

Here is the call graph for this function:

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

Implements GEOMETRIA.

Definición en la línea 679 del archivo terreno_lod.C.

References _x_tam, _y_tam, CALIDAD_VISUAL::activar_bordes_gl(), CALIDAD_VISUAL::activar_caras_gl(), IMAGEN::activar_gl(), MATERIAL::activar_gl(), CALIDAD_VISUAL::activar_textura_gl(), CALIDAD_VISUAL::con_bordes, CALIDAD_VISUAL::con_cajas, CALIDAD_VISUAL::con_caras, CALIDAD_VISUAL::con_caustics, CALIDAD_VISUAL::con_textura, consultar_padres(), imagen, LISTA_padres, pintar_tiras_gl(), update_vertex(), vertices_arr, vertices_tam, VERTICE_GL::x, COORDENADA_2D::x, y COORDENADA_2D::y.

Here is the call graph for this function:

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

Implements GEOMETRIA.

Definición en la línea 859 del archivo terreno_lod.C.

void TERRENO_LOD::pintar_tiras_gl void   )  [private]
 

Este algoritmo se deriva del macro algoritmo publicado en "Real-time continous level of detail rendering of height fields", Lindstrom/Hodges/Koller/Faust/Ribarsky/Turner, ACM Siggraph computer graphics 1996, pg.

109. y en comentarios se indican las lineas del macroalgoritmo original. (equivalente a `RENDER-BLOCK`)

Definición en la línea 582 del archivo terreno_lod.C.

References _x_tam, _y_tam, arr_debug_x, arr_debug_y, COLOR::b, buffer, color_debug, COLOR::g, nivel_anterior, pintar_cuadrante_gl(), pintar_cubo(), potencia2(), ptr, COLOR::r, LISTA< int >::tam(), toggle_ptr(), vertices_arr, VERTICE_GL::x, COORDENADA_2D::x, VERTICE_GL::y, COORDENADA_2D::y, y VERTICE_GL::z.

Referenciado por pintar_gl().

Here is the call graph for this function:

void TERRENO_LOD::pintar_tirasv_gl void   )  [private]
 

BOOLEAN TERRENO_LOD::seleccionar RAYO Rayito,
int *  i,
int *  j
 

Definición en la línea 915 del archivo terreno_lod.C.

References _escala, coord2index_x(), coord2index_y(), interseccion(), VECTOR::x, y VECTOR::y.

Here is the call graph for this function:

void TERRENO_LOD::toggle_ptr void   )  [private]
 

Definición en la línea 384 del archivo terreno_lod.C.

References ptr.

Referenciado por pintar_cuadrante_gl(), y pintar_tiras_gl().

void TERRENO_LOD::update_vertex COORDENADA_2D v  )  [private]
 

Esta operacion implementa la funcion "UPDATE-VERTEX" del algoritmo implementado de LOD.

Definición en la línea 421 del archivo terreno_lod.C.

References consultar_padres(), y notify().

Referenciado por pintar_gl().

Here is the call graph for this function:


Documentación de los datos miembro

double TERRENO_LOD::_escala [private]
 

Definición en la línea 184 del archivo terreno_lod.h.

Referenciado por coord2index_x(), coord2index_y(), seleccionar(), y TERRENO_LOD().

double TERRENO_LOD::_factor_exageracion [private]
 

Definición en la línea 185 del archivo terreno_lod.h.

Referenciado por TERRENO_LOD().

VECTOR TERRENO_LOD::_max [private]
 

Definición en la línea 183 del archivo terreno_lod.h.

Referenciado por minmax(), y TERRENO_LOD().

VECTOR TERRENO_LOD::_min [private]
 

Definición en la línea 182 del archivo terreno_lod.h.

Referenciado por minmax(), y TERRENO_LOD().

long int TERRENO_LOD::_x_tam [private]
 

Definición en la línea 176 del archivo terreno_lod.h.

Referenciado por calcule_normal(), index2coord_y(), interseccion(), interseccion_celda(), pintar_gl(), pintar_tiras_gl(), y TERRENO_LOD().

long int TERRENO_LOD::_y_tam [private]
 

Definición en la línea 177 del archivo terreno_lod.h.

Referenciado por calcule_normal(), coord2index_y(), interseccion(), pintar_gl(), pintar_tiras_gl(), y TERRENO_LOD().

LISTA<int> TERRENO_LOD::arr_debug_x [private]
 

Definición en la línea 188 del archivo terreno_lod.h.

Referenciado por interseccion(), y pintar_tiras_gl().

LISTA<int> TERRENO_LOD::arr_debug_y [private]
 

Definición en la línea 189 del archivo terreno_lod.h.

Referenciado por interseccion(), y pintar_tiras_gl().

_TERRENO_LOD_ATRIBUTO_VERTICE* TERRENO_LOD::atributos_arr [private]
 

Definición en la línea 180 del archivo terreno_lod.h.

Referenciado por TERRENO_LOD().

COORDENADA_2D TERRENO_LOD::buffer[2] [private]
 

Definición en la línea 169 del archivo terreno_lod.h.

Referenciado por elem_buffer(), pintar_cuadrante_gl(), y pintar_tiras_gl().

COLOR TERRENO_LOD::color_debug [private]
 

Definición en la línea 191 del archivo terreno_lod.h.

Referenciado por interseccion(), y pintar_tiras_gl().

int TERRENO_LOD::dimension [private]
 

Definición en la línea 172 del archivo terreno_lod.h.

Referenciado por consultar_padres(), y TERRENO_LOD().

IMAGEN* TERRENO_LOD::imagen [private]
 

Definición en la línea 175 del archivo terreno_lod.h.

Referenciado por anexar_textura(), crear_copia(), pintar_gl(), TERRENO_LOD(), y ~TERRENO_LOD().

int TERRENO_LOD::nivel_anterior [private]
 

Definición en la línea 170 del archivo terreno_lod.h.

Referenciado por pintar_cuadrante_gl(), pintar_tiras_gl(), y TERRENO_LOD().

int TERRENO_LOD::ptr [private]
 

Definición en la línea 171 del archivo terreno_lod.h.

Referenciado por pintar_cuadrante_gl(), pintar_tiras_gl(), TERRENO_LOD(), y toggle_ptr().

VERTICE_GL* TERRENO_LOD::vertices_arr [private]
 

Definición en la línea 179 del archivo terreno_lod.h.

Referenciado por index2coord_x(), index2coord_y(), interseccion_celda(), pintar_gl(), pintar_tiras_gl(), TERRENO_LOD(), y ~TERRENO_LOD().

long int TERRENO_LOD::vertices_tam [private]
 

Definición en la línea 178 del archivo terreno_lod.h.

Referenciado por pintar_gl(), y TERRENO_LOD().


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.