#include <terreno_lod.h>
Diagrama de herencias de TERRENO_LOD
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 GEOMETRIA * | crear_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 |
IMAGEN * | imagen |
long int | _x_tam |
long int | _y_tam |
long int | vertices_tam |
VERTICE_GL * | vertices_arr |
_TERRENO_LOD_ATRIBUTO_VERTICE * | atributos_arr |
VECTOR | _min |
VECTOR | _max |
double | _escala |
double | _factor_exageracion |
LISTA< int > | arr_debug_x |
LISTA< int > | arr_debug_y |
COLOR | color_debug |
|
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:
|
Definición en la línea 240 del archivo terreno_lod.C. References imagen, y vertices_arr. |
|
Implements GEOMETRIA. Definición en la línea 332 del archivo terreno_lod.C. References imagen. |
|
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:
|
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:
|
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. |
|
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(). |
|
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(). |
|
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. Referenciado por interseccion(), y seleccionar(). |
|
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:
|
Definición en la línea 375 del archivo terreno_lod.C. References buffer. Referenciado por pintar_cuadrante_gl(). |
|
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(). |
|
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(). |
|
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.
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:
|
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:
|
Reimplementado de GEOMETRIA. Definición en la línea 362 del archivo terreno_lod.C. |
|
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:
|
Implements GEOMETRIA. Definición en la línea 852 del archivo terreno_lod.C. |
|
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:
|
Here is the call graph for this function:
|
Implements GEOMETRIA. Definición en la línea 859 del archivo terreno_lod.C. |
|
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:
|
|
|
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:
|
Definición en la línea 384 del archivo terreno_lod.C. References ptr. Referenciado por pintar_cuadrante_gl(), y pintar_tiras_gl(). |
|
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:
|
Definición en la línea 184 del archivo terreno_lod.h. Referenciado por coord2index_x(), coord2index_y(), seleccionar(), y TERRENO_LOD(). |
|
Definición en la línea 185 del archivo terreno_lod.h. Referenciado por TERRENO_LOD(). |
|
Definición en la línea 183 del archivo terreno_lod.h. Referenciado por minmax(), y TERRENO_LOD(). |
|
Definición en la línea 182 del archivo terreno_lod.h. Referenciado por minmax(), y TERRENO_LOD(). |
|
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(). |
|
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(). |
|
Definición en la línea 188 del archivo terreno_lod.h. Referenciado por interseccion(), y pintar_tiras_gl(). |
|
Definición en la línea 189 del archivo terreno_lod.h. Referenciado por interseccion(), y pintar_tiras_gl(). |
|
Definición en la línea 180 del archivo terreno_lod.h. Referenciado por TERRENO_LOD(). |
|
Definición en la línea 169 del archivo terreno_lod.h. Referenciado por elem_buffer(), pintar_cuadrante_gl(), y pintar_tiras_gl(). |
|
Definición en la línea 191 del archivo terreno_lod.h. Referenciado por interseccion(), y pintar_tiras_gl(). |
|
Definición en la línea 172 del archivo terreno_lod.h. Referenciado por consultar_padres(), y TERRENO_LOD(). |
|
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(). |
|
Definición en la línea 170 del archivo terreno_lod.h. Referenciado por pintar_cuadrante_gl(), pintar_tiras_gl(), y TERRENO_LOD(). |
|
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(). |
|
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(). |
|
Definición en la línea 178 del archivo terreno_lod.h. Referenciado por pintar_gl(), y TERRENO_LOD(). |