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

#include <terreno.h>

Diagrama de herencias de TERRENO

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

Collaboration graph
[leyenda]
Lista de todos los miembros.

Métodos públicos

 TERRENO (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 o algo asi.

virtual ~TERRENO ()
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)
void set_paleta (PALETA *P)
 Este metodo reprograma la asociacion de colores para la paleta interna.

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`.

void elim (void)

Métodos privados

void pintar_tiras_gl (void)
 OJO: El metodo de arreglos GL es mas rapido pero menos portable.

void pintar_tirasv_gl (void)
void calcular_color (float z, float *r, float *g, float *b)
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.


Atributos privados

PALETAPaleta
IMAGENimagen
long int _x_tam
long int _y_tam
long int vertices_tam
VERTICE_GLvertices_arr
GLubytecolores_arr
GLuint ** TIras_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::TERRENO 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 o algo asi.

Definición en la línea 145 del archivo terreno.C.

References _escala, _factor_exageracion, _max, _min, _x_tam, _y_tam, calcule_normal(), colores_arr, GLOBAL_DEM::exportar_vertices(), GLubyte, GLuint, imagen, VERTICE_GL::nx, VERTICE_GL::ny, VERTICE_GL::nz, set_paleta(), TIras_arr, 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::~TERRENO  )  [virtual]
 

Definición en la línea 294 del archivo terreno.C.

References elim().

Here is the call graph for this function:


Documentación de las funciones miembro

void TERRENO::anexar_textura IMAGEN img  )  [virtual]
 

Implements GEOMETRIA.

Definición en la línea 407 del archivo terreno.C.

References imagen.

void TERRENO::calcular_color float  z,
float *  r,
float *  g,
float *  b
[private]
 

Definición en la línea 448 del archivo terreno.C.

References _escala, _factor_exageracion, COLOR::b, PALETA::escala(), COLOR::g, Paleta, y COLOR::r.

Referenciado por pintar_tiras_gl(), y set_paleta().

Here is the call graph for this function:

VECTOR TERRENO::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 359 del archivo terreno.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().

Here is the call graph for this function:

VECTOR TERRENO::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 324 del archivo terreno.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::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 416 del archivo terreno.C.

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

int TERRENO::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 117 del archivo terreno.h.

References _escala.

Referenciado por interseccion(), y seleccionar().

int TERRENO::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 132 del archivo terreno.h.

References _escala, y _y_tam.

Referenciado por interseccion(), y seleccionar().

GEOMETRIA * TERRENO::crear_copia void   )  [virtual]
 

OJO: Esto no funciona.

Reimplementado de GEOMETRIA.

Definición en la línea 723 del archivo terreno.C.

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

Here is the call graph for this function:

void TERRENO::elim void   ) 
 

Definición en la línea 275 del archivo terreno.C.

References _y_tam, colores_arr, imagen, TIras_arr, y vertices_arr.

Referenciado por ~TERRENO().

double TERRENO::index2coord_x int  i  )  [inline]
 

Esta es la funcion inversa de `coord2index_x`.

Definición en la línea 148 del archivo terreno.h.

References vertices_arr, y VERTICE_GL::x.

Referenciado por interseccion(), y interseccion_celda().

double TERRENO::index2coord_y int  j  )  [inline]
 

Esta es la funcion inversa de `coord2index_x`.

Definición en la línea 162 del archivo terreno.h.

References _x_tam, y vertices_arr.

Referenciado por interseccion(), y interseccion_celda().

double TERRENO::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 284 del archivo terreno.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::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 176 del archivo terreno.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::minmax VECTOR min,
VECTOR max
[virtual]
 

Reimplementado de GEOMETRIA.

Definición en la línea 437 del archivo terreno.C.

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

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

Implements GEOMETRIA.

Definición en la línea 706 del archivo terreno.C.

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

Implements GEOMETRIA.

Definición en la línea 638 del archivo terreno.C.

References 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, imagen, pintar_tiras_gl(), vertices_arr, y vertices_tam.

Here is the call graph for this function:

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

Implements GEOMETRIA.

Definición en la línea 713 del archivo terreno.C.

void TERRENO::pintar_tiras_gl void   )  [private]
 

OJO: El metodo de arreglos GL es mas rapido pero menos portable.

Por otro lado debe tenerse muy en cuenta como es que se usa el arreglo "colores_arr", ya que puede contener atributos de material, o resultados precalculados con el modelo de iluminacion.

Definición en la línea 523 del archivo terreno.C.

References _x_tam, _y_tam, arr_debug_x, arr_debug_y, COLOR::b, calcular_color(), color_debug, colores_arr, COLOR::g, pintar_cubo(), COLOR::r, LISTA< int >::tam(), TIras_arr, vertices_arr, VERTICE_GL::x, VERTICE_GL::y, y VERTICE_GL::z.

Referenciado por pintar_gl().

Here is the call graph for this function:

void TERRENO::pintar_tirasv_gl void   )  [private]
 

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

Definición en la línea 770 del archivo terreno.C.

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

Here is the call graph for this function:

void TERRENO::set_paleta PALETA P  ) 
 

Este metodo reprograma la asociacion de colores para la paleta interna.

Definición en la línea 300 del archivo terreno.C.

References _x_tam, _y_tam, calcular_color(), colores_arr, GLubyte, Paleta, y vertices_arr.

Referenciado por ESPACIO_ABIERTO::init(), y TERRENO().

Here is the call graph for this function:


Documentación de los datos miembro

double TERRENO::_escala [private]
 

Definición en la línea 56 del archivo terreno.h.

Referenciado por calcular_color(), coord2index_x(), coord2index_y(), seleccionar(), y TERRENO().

double TERRENO::_factor_exageracion [private]
 

Definición en la línea 57 del archivo terreno.h.

Referenciado por calcular_color(), y TERRENO().

VECTOR TERRENO::_max [private]
 

Definición en la línea 55 del archivo terreno.h.

Referenciado por minmax(), y TERRENO().

VECTOR TERRENO::_min [private]
 

Definición en la línea 54 del archivo terreno.h.

Referenciado por minmax(), y TERRENO().

long int TERRENO::_x_tam [private]
 

Definición en la línea 47 del archivo terreno.h.

Referenciado por calcule_normal(), index2coord_y(), interseccion(), interseccion_celda(), pintar_tiras_gl(), set_paleta(), y TERRENO().

long int TERRENO::_y_tam [private]
 

Definición en la línea 48 del archivo terreno.h.

Referenciado por calcule_normal(), coord2index_y(), elim(), interseccion(), pintar_tiras_gl(), set_paleta(), y TERRENO().

LISTA<int> TERRENO::arr_debug_x [private]
 

Definición en la línea 60 del archivo terreno.h.

Referenciado por interseccion(), y pintar_tiras_gl().

LISTA<int> TERRENO::arr_debug_y [private]
 

Definición en la línea 61 del archivo terreno.h.

Referenciado por interseccion(), y pintar_tiras_gl().

COLOR TERRENO::color_debug [private]
 

Definición en la línea 63 del archivo terreno.h.

Referenciado por interseccion(), y pintar_tiras_gl().

GLubyte* TERRENO::colores_arr [private]
 

Definición en la línea 51 del archivo terreno.h.

Referenciado por elim(), pintar_tiras_gl(), set_paleta(), y TERRENO().

IMAGEN* TERRENO::imagen [private]
 

Definición en la línea 46 del archivo terreno.h.

Referenciado por anexar_textura(), crear_copia(), elim(), pintar_gl(), y TERRENO().

PALETA* TERRENO::Paleta [private]
 

Definición en la línea 45 del archivo terreno.h.

Referenciado por calcular_color(), y set_paleta().

GLuint** TERRENO::TIras_arr [private]
 

Definición en la línea 52 del archivo terreno.h.

Referenciado por elim(), pintar_tiras_gl(), y TERRENO().

VERTICE_GL* TERRENO::vertices_arr [private]
 

Definición en la línea 50 del archivo terreno.h.

Referenciado por elim(), index2coord_x(), index2coord_y(), interseccion_celda(), pintar_gl(), pintar_tiras_gl(), set_paleta(), y TERRENO().

long int TERRENO::vertices_tam [private]
 

Definición en la línea 49 del archivo terreno.h.

Referenciado por pintar_gl(), y TERRENO().


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.