#include <camara.h>
Diagrama de herencias de CAMARA


Métodos públicos | |
| CAMARA () | |
| virtual | ~CAMARA () |
| VECTOR | posicion (void) |
| void | set_posicion (VECTOR p) |
| QUATERNION | orientacion (void) |
| void | set_orientacion (QUATERNION o) |
| double | fov (void) |
| void | set_fov (double in_nuevo_fov) |
| double | far_plane (void) |
| void | set_far_plane (double f) |
| double | near_plane (void) |
| void | set_near_plane (double f) |
| int | modelo (void) |
| void | set_modelo (int val) |
| Este metodo activa (con TRUE) o desactiva (con FALSE) la generacion de una representacion grafica de la camara (vea el metodo `pintar_gl`). | |
| void | asociar_padre (ENTIDAD *p) |
| char * | nombre_padre (void) |
| void | preprocesar_vista (void) |
| Precalcula los valores de los atributos temporales `_pos`, `_up`, `_right` y `_dir`, que se usan en los metodos `generar_rayo` y `activar_povray`. | |
| RAYO | generar_rayo (int x, int y) |
| Calcula el RAYO que desde el punto donde esta localizada esta camara pasa por el pixel (x, y) del "viewport", que esta en el plano de proyeccion de esta camara. | |
| void | imprimir (void) |
| BOOLEAN | minmax_visible (VECTOR esquinas[8]) |
| Este metodo determina si un paralelogramo (que no necesariamente esta alineado con los ejes principales) intersecta o no el volumen de visualizacion. | |
| MATRIZ_4x4 | calcular_matriz_de_proyeccion (int modo_stereo=0) |
| Calcula una matriz de proyeccion planar geometrica que sea consistente con el estado actual de la camara. | |
| BOOLEAN | proyectar_punto (VECTOR *in_P, double *out_U, double *out_V) |
| Dado un punto `*in_P` en coordenadas absolutas, se calcula un punto P', que se encuentra ubicado en el plano de proyección y cuyas coordenadas relativas a dicho plano son (*out_U, *out_V). | |
| BOOLEAN | consultar_variable (const char *nombre_variable, int &tipo, void **ref) |
| En este metodo se define el comportamiento por basico de acceso a variables para cosas. | |
| void | pintar_gl (void) |
| Este metodo genera una representacion OpenGL visible de una camara. | |
| void | activar_gl (int modo_stereo=0) |
| Tenga en cuenta la representacion interna de la camara de AQUYNZA: una camara tiene una posicion y una orientacion... | |
| void | activar_centro_gl (void) |
| Esta variacion del metodo `activar_gl` se utiliza para activar solo la proyeccion y orientacion de la camara en operaciones tipicamente de trazado de fondos (i.e. | |
| void | billboard_gl (int tipo) |
| Inicializa una proyeccion ortogonal para la vista actual de tal manera que al pintar objetos 2D, estos queden enmarcados dentro de la zona (-1, -1) - (1, 1) y este marco coincida con un area de la ventana asi: CAM_NO_CUADRAR: el cuadro es del tamanno de la ventana CAM_CUADRAR_X: el cuadro es cuadrado y tiene el ancho de la ventana CAM_CUADRAR_Y: el cuadro es cuadrado tiene el alto de la ventana CAM_CUADRAR_MENOR: el cuadro es cuadrado y tiene el alto o el ancho de la ventana, y ademas esta completamente contenido en la misma. | |
| void | subbillboard_gl (int tam, int x, int y, int dx, int dy, int cuadre) |
| Activa el viewport de manera tal que corresponda a una la celda imaginaria (x,y)-(x+dx, y+dy) dentro de una cuadricula de tam x tam pedazos sobre el cuadro definido por billboard_gl(CAM_CUADRAR_MENOR). | |
| void | activar_povray (FILE *fd) |
| Este método escribe en el archivo `*fd` las primitivas POVray necesarias para especificar la CAMARA `*this` en la escena POV. | |
| BOOLEAN | procesar_teclado (EVENTO_GUI *e) |
| Este metodo recibe un evento de teclado y cambia el estado de la camara. | |
| BOOLEAN | procesar_mouse (EVENTO_GUI *e) |
| void | procesar_resize (int xtam, int ytam) |
| double | factor_font (void) |
| BOOLEAN | leer (TOKENIZADOR *Sabiondo) |
Métodos privados | |
| void | pintar_base_gl (void) |
| void | pintar_volumen_gl (void) |
Atributos privados | |
| VECTOR | _posicion |
| Posición de la CAMARA. | |
| QUATERNION | _orientacion |
| Orientación de la CAMARA. | |
| double | _fov |
| Ángulo de visión (apertura) | |
| double | _near_plane |
| Distancia al plano cercano del volumen de visualización al centro de proyección de la CAMARA. | |
| double | _far_plane |
| Distancia al plano lejano del volumen de visualización al centro de proyección de la CAMARA. | |
| int | _modo_proyeccion |
| Una de las `ENUM_TIPOS_PERSPECTIVAS`. | |
| double | _zoom_paralelo |
| Usado cuando _modo_proyeccion = CAM_PARALELA, representa un valor en aumentos, que por defecto es 1 y debe ser mayor a EPSILON. | |
| ENTIDAD * | _Padre |
| Una camara puede asociarse a una ENTIDAD! | |
| char * | _nombre_padre |
| OJO: Esto no es redundante? | |
| BOOLEAN | mostrar_etiqueta |
| TRUE si el nombre de la cámara se muestra sobre el viewport en la capa "cockpit" (vicera de piloto en transparente). | |
| double | transparencia_etiqueta |
| `mostrar_etiqueta` es TRUE | |
| COLOR | color_etiqueta |
| Usado si `mostrar_etiqueta` es TRUE. | |
| int | tipo_modelo |
| Para pintar_gl() -> Deberia llamarse "modo". | |
| int | modo_seguimiento |
| uno de los MODOS_DE_CAMARA | |
| int | modo_control |
| uno de los MODOS_DE_CONTROL_CAMARA | |
| int | _ventana_xtam |
| Una `CAMARA` debe saber de qué tamaño es el viewport para el cual está generando una proyección, para poder modificar sus parámetros internos en función del ángulo de vision (`_fov`) y de la actual proporción de ancho/alto del viewport. | |
| int | _ventana_ytam |
| Ver la documentación de `_ventana_xtam`. | |
| BOOLEAN | _con_posicion |
| Existen ciertas ocaciones en las cuales una aplicación puede necesitar activar la orientación de una CAMARA sin activar su posicion. | |
| VECTOR | _up |
| Los `VECTOR`es `_up`, `_right`, `_dir` y `_pos` son variables temporales para calculadas dentro del método `CAMARA::preprocesar_vista`, y para uso interno de los demás métodos de la clase. | |
| VECTOR | _right |
| VECTOR | _dir |
| VECTOR | _pos |
Debe tenerse en cuenta lo siguiente:
Definición en la línea 68 del archivo camara.h.
|
|
Definición en la línea 87 del archivo camara.C. References _con_posicion, _far_plane, _fov, _modo_proyeccion, _near_plane, _nombre_padre, _orientacion, _Padre, _posicion, _ventana_xtam, _ventana_ytam, COLOR::b, CAM_GLOBAL, CAM_PERSPECTIVA, CAM_STANDARD, color_etiqueta, COLOR::g, QUATERNION::importar_angulo_eje(), modo_control, modo_seguimiento, mostrar_etiqueta, COLOR::r, tipo_modelo, transparencia_etiqueta, VECTOR::x, VECTOR::y, y VECTOR::z. |
Here is the call graph for this function:

|
|
Definición en la línea 122 del archivo camara.C. References _nombre_padre. |
|
|
Esta variacion del metodo `activar_gl` se utiliza para activar solo la proyeccion y orientacion de la camara en operaciones tipicamente de trazado de fondos (i.e. visualizacion de objetos "infinitamente lejanos" cuyas posiciones aparentes no varian en funcion de la localizacion de la camara). Definición en la línea 830 del archivo camara.C. References _con_posicion, _posicion, activar_gl(), VECTOR::x, VECTOR::y, y VECTOR::z. Referenciado por FONDO_MAPA_DE_ENTORNO::pintar_gl(), y FONDO_ESTRELLAS::pintar_gl(). |
Here is the call graph for this function:

|
|
Tenga en cuenta la representacion interna de la camara de AQUYNZA: una camara tiene una posicion y una orientacion... es decir que "esta en algun lado dirigiendo su mirada hacia alguna direccion". Dado que la direccion es un quaternion y OpenGL trabaja con matrices, aqui puede verse como se le pasa a OpenGL una matriz transformada `R` (con la posicion y translacion) en el modo GL_PROJECTION. Ese proceso de transformacion geometrica se hace despues de espefificarle a OpenGL su debida matriz de proyeccion. Dependiendo del modo_stereo se hace una de 3 cosas: 0: La proyeccion es la normal 1: Se altera la proyeccion para generar la perspectiva de un ojo izquierdo 2: Se altera la proyeccion para generar la perspectiva de un ojo derecho Definición en la línea 790 del archivo camara.C. References calcular_matriz_de_proyeccion(), MATRIZ_4x4::cargar_gl(), MATRIZ_4x4::importar_gl(), y MATRIZ_4x4::imprimir(). Referenciado por activar_centro_gl(), VISOR_GEOMETRIA::pintar_gl(), VISOR_CAMPO_VECTORIAL::pintar_gl(), y VISOR_SENSOR_VECTOR::pintar_vector_gl(). |
Here is the call graph for this function:

|
|
Este método escribe en el archivo `*fd` las primitivas POVray necesarias para especificar la CAMARA `*this` en la escena POV. Nótese que se realiza un truco para convertir el sistema de coordenadas de mano derecha AQUYNZA al sistema de coordenadas de mano izquierda POV: cambiar el signo de la componente y del vector `_right`. Definición en la línea 1019 del archivo camara.C. References _dir, _pos, _right, _up, preprocesar_vista(), VECTOR::x, VECTOR::y, y VECTOR::z. |
Here is the call graph for this function:

|
|
Definición en la línea 156 del archivo camara.C. References _Padre. |
|
|
Inicializa una proyeccion ortogonal para la vista actual de tal manera que al pintar objetos 2D, estos queden enmarcados dentro de la zona (-1, -1) - (1, 1) y este marco coincida con un area de la ventana asi: CAM_NO_CUADRAR: el cuadro es del tamanno de la ventana CAM_CUADRAR_X: el cuadro es cuadrado y tiene el ancho de la ventana CAM_CUADRAR_Y: el cuadro es cuadrado tiene el alto de la ventana CAM_CUADRAR_MENOR: el cuadro es cuadrado y tiene el alto o el ancho de la ventana, y ademas esta completamente contenido en la misma. Este metodo ademas coloca una etiqueta de camara en el billboard programado. OJO: Desde el punto de vista formal, el nombre de `billboard` no esta bien dado, porque un billboard puede estar en la escena (lo que define un "billboard" es que todo el tiempo este orientado hacia la camara). Bien, pues si se le ocurre un mejor nombre para esta operacion... propongalo! Definición en la línea 895 del archivo camara.C. References _ventana_xtam, _ventana_ytam, COLOR::b, BOOLEAN, CAM_CUADRAR_MENOR, CAM_CUADRAR_X, CAM_CUADRAR_Y, CAM_NO_CUADRAR, chequear_fuente(), color_etiqueta, factor_font(), COLOR::g, mostrar_etiqueta, ENTIDAD::nombre(), COLOR::r, y transparencia_etiqueta. Referenciado por VISOR_SENSOR_VECTOR::pintar_gl(). |
Here is the call graph for this function:

|
|
Calcula una matriz de proyeccion planar geometrica que sea consistente con el estado actual de la camara. Esta matriz de proyeccion podra ser usada dentro de cualquier secuencia de visualizacion (i.e. no depende de ninguna libreria externa particular, y en especial, no depende de OpenGL). Definición en la línea 507 del archivo camara.C. References _con_posicion, _far_plane, _fov, _modo_proyeccion, _near_plane, _orientacion, _Padre, _posicion, _ventana_xtam, _ventana_ytam, arr, CAM_PARALELA, CAM_PERSPECTIVA, ENTIDAD::consultar_variable(), MATRIZ_4x4::frustum(), MATRIZ_4x4::importar_quaternion(), MATRIZ_4x4::inversa(), MATRIZ_4x4::M, MATRIZ_4x4::ortho(), MATRIZ_4x4::rotacion_eje(), T_QUATERNION, T_VECTOR, MATRIZ_4x4::translacion(), VECTOR::x, VECTOR::y, y VECTOR::z. Referenciado por activar_gl(). |
Here is the call graph for this function:

|
||||||||||||||||
|
En este metodo se define el comportamiento por basico de acceso a variables para cosas. Notese que como el metodo es virtual, puede ser redefinido por las clases que hereden de COSA. Es util llamar este metodo dentro de sus redefiniciones, usando COSA::demevariable(); OJO: En este metodo se esta violando el principio de encapsulamiento de datos! Esto debe redisennarse! Reimplementado de ENTIDAD. Definición en la línea 170 del archivo camara.C. References _orientacion, _posicion, T_QUATERNION, T_VECTOR, y TMP_quaternion. |
|
|
Definición en la línea 889 del archivo camara.C. References _ventana_xtam. Referenciado por billboard_gl(), VISOR_SENSOR_VECTOR::pintar_vistavion1_gl(), y VISOR_SENSOR_VECTOR::pintar_vistavion2_gl(). |
|
|
Definición en la línea 134 del archivo camara.C. References _far_plane. |
|
|
Definición en la línea 157 del archivo camara.C. References _fov. |
|
||||||||||||
|
Calcula el RAYO que desde el punto donde esta localizada esta camara pasa por el pixel (x, y) del "viewport", que esta en el plano de proyeccion de esta camara. OJO: Esto solo funciona para camaras configuradas con proyeccion perspectiva. Deberia tenerse en cuenta el caso paralelo... (pero, ojo, usar version inline `generar_rayo_paralelo` o algo asi, para no meter un `if` aqui) Postcondición:
Nótese que esta postcondición es importante, pues los algoritmos de seguimientos de rayos construidos a partir de este método pueden hacer optimizaciones (i.e. evitar tener que volver a llamar a la normalizacion del vector de dirección). Definición en la línea 243 del archivo camara.h. References _dir, _pos, _right, _up, _ventana_xtam, _ventana_ytam, RAYO::direccion, VECTOR::normalizar(), RAYO::origen, VECTOR::x, VECTOR::y, y VECTOR::z. Referenciado por RAYTRACER_CRIOLLO::ejecutar(), y GIZMO_3D_TRANSLACION_3DSMAX::procesar_mouse(). |
Here is the call graph for this function:

|
|
Definición en la línea 1050 del archivo camara.C. References _far_plane, _fov, _modo_proyeccion, _near_plane, _orientacion, _posicion, _up, CAM_PARALELA, CAM_PERSPECTIVA, DEG2gms(), DEG2hms(), MATRIZ_4x4::exportar_angulos_euler(), MATRIZ_4x4::importar_quaternion(), ENTIDAD::nombre(), preprocesar_vista(), VECTOR::x, VECTOR::y, y VECTOR::z. Referenciado por procesar_teclado(). |
Here is the call graph for this function:

|
Here is the call graph for this function:

|
|
Este metodo determina si un paralelogramo (que no necesariamente esta alineado con los ejes principales) intersecta o no el volumen de visualizacion. El paralelogramo a probar esta definido por sus 8 extremos (en un arreglo de 8 VECTORes que tiene las coordenadas de los 8 vertices). Si el paralelogramo se intersecta con el volumen de visualizacion de esta camara, entonces es "visible" y se retorna TRUE. De lo contrario se retorna FALSE. OJO: Esta funcion NO se ha terminado de desarrollar! Aunque ya funciona, notese que las definiciones de plano punto/normal pueden ser preprocesados cada vez que se altere el estado de la camara, y no todas las veces que se llame este metodo. Se suguiere crear un CAMARA::init(). Definición en la línea 194 del archivo camara.C. References _con_posicion, _far_plane, _fov, _modo_proyeccion, _near_plane, _orientacion, _Padre, _posicion, _ventana_xtam, _ventana_ytam, BOOLEAN, CAM_PARALELA, ENTIDAD::consultar_variable(), MATRIZ_4x4::importar_quaternion(), VECTOR::normalizar(), VECTOR::producto_punto(), T_QUATERNION, T_VECTOR, MATRIZ_4x4::translacion(), VECTOR::x, VECTOR::y, y VECTOR::z. Referenciado por ESPACIO_ABIERTO::pintar_gl(), y COSA_RIGIDA::pintar_gl(). |
Here is the call graph for this function:

|
|
Definición en la línea 729 del archivo camara.C. References tipo_modelo. |
|
|
Definición en la línea 146 del archivo camara.C. References _near_plane. |
|
|
Definición en la línea 155 del archivo camara.C. References _nombre_padre. |
|
|
Definición en la línea 152 del archivo camara.C. References _orientacion. Referenciado por BSP_2D::pintar_bsp(). |
|
|
Definición en la línea 609 del archivo camara.C. References PINTAR_VECTOR_GL(). Referenciado por pintar_gl(). |
Here is the call graph for this function:

|
|
Este metodo genera una representacion OpenGL visible de una camara. Notese que esta operacion puede desactivarse o activarse con `set_modelo`. OJO: No confundir con `activar_gl`. Definición en la línea 735 del archivo camara.C. References _con_posicion, _orientacion, _Padre, _posicion, MATRIZ_4x4::cargar_gl(), ENTIDAD::consultar_variable(), MATRIZ_4x4::importar_quaternion(), pintar_base_gl(), pintar_volumen_gl(), T_QUATERNION, T_VECTOR, tipo_modelo, MATRIZ_4x4::translacion(), VECTOR::x, VECTOR::y, y VECTOR::z. |
Here is the call graph for this function:

|
|
Definición en la línea 626 del archivo camara.C. References _far_plane, _fov, _modo_proyeccion, _near_plane, _ventana_xtam, _ventana_ytam, y CAM_PARALELA. Referenciado por pintar_gl(). |
|
|
Definición en la línea 151 del archivo camara.C. References _posicion. Referenciado por BSP_2D::pintar_bsp(), y SISTEMA_DE_PARTICULAS::pintar_gl(). |
|
|
Precalcula los valores de los atributos temporales `_pos`, `_up`, `_right` y `_dir`, que se usan en los metodos `generar_rayo` y `activar_povray`. OJO: Hay que revisar las matematicas de esto! En particular... porqué es equivalente a lo que hace OpenGL? Definición en la línea 451 del archivo camara.C. References _con_posicion, _dir, _fov, _orientacion, _Padre, _pos, _posicion, _right, _up, _ventana_xtam, _ventana_ytam, ENTIDAD::consultar_variable(), MATRIZ_4x4::importar_quaternion(), MATRIZ_4x4::inversa(), T_QUATERNION, T_VECTOR, MATRIZ_4x4::translacion(), VECTOR::x, VECTOR::y, y VECTOR::z. Referenciado por activar_povray(), RAYTRACER_CRIOLLO::ejecutar(), imprimir(), GIZMO_3D_TRANSLACION_3DSMAX::procesar_mouse(), y proyectar_punto(). |
Here is the call graph for this function:

|
|
Definición en la línea 1217 del archivo camara.C. References _orientacion, _posicion, BOOLEAN, ETYPE_BUTTON_DOWN, ETYPE_BUTTON_UP, MATRIZ_4x4::importar_quaternion(), MATRIZ_4x4::M, EVENTO_GUI::mouse_button_mask, EVENTO_GUI::mouse_delta_x, EVENTO_GUI::mouse_delta_y, QUATERNION::normalizar(), MATRIZ_4x4::rotacion_eje(), EVENTO_GUI::tipo_de_evento, VECTOR::x, VECTOR::y, y VECTOR::z. Referenciado por VISOR_GEOMETRIA::procesar_mouse(). |
Here is the call graph for this function:

|
||||||||||||
|
Definición en la línea 1279 del archivo camara.C. References _ventana_xtam, y _ventana_ytam. Referenciado por VISOR_GEOMETRIA::procesar_resize(), VISOR_CAMPO_VECTORIAL::procesar_resize(), y VISOR::procesar_resize(). |
|
|
Este metodo recibe un evento de teclado y cambia el estado de la camara. Es util para la actualizacion de la camara por parte de un usuario humano en aplicaciones interactivas AQUYNZA. Notese que el comportamiento de la camara (su respuesta a eventos de teclado) esta cableada en este metodo. Este metodo es tan solo un gran `switch`. Los casos del switch estan organi- zados en secciones. Vea bien cada titulo de seccion para entender la estructura del metodo. Definición en la línea 1100 del archivo camara.C. References _far_plane, _fov, _modo_proyeccion, _near_plane, _posicion, CAM_PARALELA, CAM_PERSPECTIVA, CAM_STANDARD, CAM_VUELO, imprimir(), EVENTO_GUI::key_code, modo_control, mostrar_etiqueta, VECTOR::x, VECTOR::y, y VECTOR::z. Referenciado por VISOR_GEOMETRIA::procesar_teclado(), VISOR_CAMPO_VECTORIAL::procesar_teclado(), y VISOR::procesar_teclado(). |
Here is the call graph for this function:

|
||||||||||||||||
|
Dado un punto `*in_P` en coordenadas absolutas, se calcula un punto P', que se encuentra ubicado en el plano de proyección y cuyas coordenadas relativas a dicho plano son (*out_U, *out_V). Se retorna TRUE si el punto P' se encuentra dentro de la superficie de proyección y FALSE si no. Por ahora se sigue el siguiente macroalgoritmo (el cual es una "vuelta del bobo"): 1. Se preprocesa la vista, para tener acceso a los vectores para el manejo en álgebra vectorial de la cámara 2. Se calcula un proyector `r` tal que parte del centro de la cámara y se dirige hacia el punto `*in_P` 3. Se calcula la ecuación canónica del plano de proyección 4. Se intersecta el rayo `r` con el plano de proyección, y el resultado se guarda en (`u`, `v`). 5. Se escalan las coordenadas `u`, `v` de tal manera que sean proporcionales a coordenadas en el espacio del viewport de la cámara (para eso se tiene en cuenta a `_ventana_xtam` y `_ventana_ytam`), y el resultado se guarda en (`*out_V`, `*out_U`). 6. Se determina si la coordenada cae dentro o fuera de la superficie de proyección y se retorna TRUE o FALSE. OJO:
Definición en la línea 334 del archivo camara.C. References _dir, _fov, _near_plane, _pos, _right, _up, _ventana_xtam, _ventana_ytam, RAYO::direccion, VECTOR::norma(), VECTOR::normalizar(), RAYO::origen, preprocesar_vista(), VECTOR::producto_punto(), VECTOR::x, VECTOR::y, y VECTOR::z. |
Here is the call graph for this function:

|
|
Definición en la línea 128 del archivo camara.C. References _far_plane. |
|
|
Definición en la línea 160 del archivo camara.C. References _fov. |
|
|
Este metodo activa (con TRUE) o desactiva (con FALSE) la generacion de una representacion grafica de la camara (vea el metodo `pintar_gl`). Tenga en cuenta que normalmente una camara que se usa para visualizar una escena NO se pinta, y las que se pintan son las demas camaras. Definición en la línea 717 del archivo camara.C. References tipo_modelo. |
|
|
Definición en la línea 140 del archivo camara.C. References _near_plane. |
|
|
Definición en la línea 154 del archivo camara.C. References _orientacion. Referenciado por VISOR_GEOMETRIA::init(), y VISOR_CAMPO_VECTORIAL::init(). |
|
|
Definición en la línea 153 del archivo camara.C. References _posicion. Referenciado por VISOR_GEOMETRIA::init(), y VISOR_CAMPO_VECTORIAL::init(). |
|
||||||||||||||||||||||||||||
|
Activa el viewport de manera tal que corresponda a una la celda imaginaria (x,y)-(x+dx, y+dy) dentro de una cuadricula de tam x tam pedazos sobre el cuadro definido por billboard_gl(CAM_CUADRAR_MENOR). Ademas, cuadre es: < 0 : la cuadricula se corre hacia abajo o hacia la izquierda == 0 : la cuadricula se deja centrada > 0 : lacuadricula se corre hacia arriba o hacia la derecha Ademas, deja configurada una vista ortogonal por defecto, ideal para trazar primitivas 2D en el intervalo [(-1, -1), (1, 1)] OJO: El sistema de coordenadas 2D tiene origen en la esquina inferior izquierda Definición en la línea 848 del archivo camara.C. References _ventana_xtam, y _ventana_ytam. Referenciado por VISOR_SENSOR_VECTOR::pintar_gl(), y VISOR_SENSOR_FLOAT::pintar_gl(). |
|
|
Existen ciertas ocaciones en las cuales una aplicación puede necesitar activar la orientación de una CAMARA sin activar su posicion. Ejemplos de estas situaciones incluyen la visualización de fondos (i.e. por ejemplos mapas de entornos basados en texturas o fondos de estrellas), en donde se muestra la ilusión de que el fondo no cambia con la translación de la cámara porque está muy lejano, pero si cambia al rotar la cámara. Para lograr dicho efecto, la CAMARA ofrece el método "activar_centro_gl", que coloca en FALSE el valor de ésta variable, que en condiciones normales permanece en TRUE. Nótese que al usuario de esta clase no le interesa tener acceso a ésta variable, sino simplemente usar los métodos `CAMARA::activar_gl` y `CAMARA::activar_centro_gl`. El método se usa para poder distinguir en las múltiples operaciones internas de la CAMARA, cuándo son parte de un tipo de algoritmo u otro. Definición en la línea 166 del archivo camara.h. Referenciado por activar_centro_gl(), calcular_matriz_de_proyeccion(), CAMARA(), minmax_visible(), pintar_gl(), y preprocesar_vista(). |
|
|
Definición en la línea 179 del archivo camara.h. Referenciado por activar_povray(), generar_rayo(), preprocesar_vista(), y proyectar_punto(). |
|
|
Distancia al plano lejano del volumen de visualización al centro de proyección de la CAMARA.
Definición en la línea 109 del archivo camara.h. Referenciado por calcular_matriz_de_proyeccion(), CAMARA(), far_plane(), imprimir(), leer(), minmax_visible(), pintar_volumen_gl(), procesar_teclado(), y set_far_plane(). |
|
|
Ángulo de visión (apertura)
Definición en la línea 105 del archivo camara.h. Referenciado por calcular_matriz_de_proyeccion(), CAMARA(), fov(), imprimir(), leer(), minmax_visible(), pintar_volumen_gl(), preprocesar_vista(), procesar_teclado(), proyectar_punto(), y set_fov(). |
|
|
Una de las `ENUM_TIPOS_PERSPECTIVAS`.
Definición en la línea 112 del archivo camara.h. Referenciado por calcular_matriz_de_proyeccion(), CAMARA(), imprimir(), leer(), minmax_visible(), pintar_volumen_gl(), y procesar_teclado(). |
|
|
Distancia al plano cercano del volumen de visualización al centro de proyección de la CAMARA.
Definición en la línea 106 del archivo camara.h. Referenciado por calcular_matriz_de_proyeccion(), CAMARA(), imprimir(), leer(), minmax_visible(), near_plane(), pintar_volumen_gl(), procesar_teclado(), proyectar_punto(), y set_near_plane(). |
|
|
OJO: Esto no es redundante?
Definición en la línea 119 del archivo camara.h. Referenciado por CAMARA(), leer(), nombre_padre(), y ~CAMARA(). |
|
|
Orientación de la CAMARA.
Definición en la línea 104 del archivo camara.h. Referenciado por calcular_matriz_de_proyeccion(), CAMARA(), consultar_variable(), imprimir(), leer(), minmax_visible(), orientacion(), pintar_gl(), preprocesar_vista(), procesar_mouse(), y set_orientacion(). |
|
|
Una camara puede asociarse a una ENTIDAD!
Definición en la línea 118 del archivo camara.h. Referenciado por asociar_padre(), calcular_matriz_de_proyeccion(), CAMARA(), minmax_visible(), pintar_gl(), y preprocesar_vista(). |
|
|
Definición en la línea 180 del archivo camara.h. Referenciado por activar_povray(), generar_rayo(), preprocesar_vista(), y proyectar_punto(). |
|
|
Posición de la CAMARA.
Definición en la línea 103 del archivo camara.h. Referenciado por activar_centro_gl(), calcular_matriz_de_proyeccion(), CAMARA(), consultar_variable(), imprimir(), leer(), minmax_visible(), pintar_gl(), posicion(), preprocesar_vista(), procesar_mouse(), procesar_teclado(), y set_posicion(). |
|
|
Definición en la línea 178 del archivo camara.h. Referenciado por activar_povray(), generar_rayo(), preprocesar_vista(), y proyectar_punto(). |
|
|
Los `VECTOR`es `_up`, `_right`, `_dir` y `_pos` son variables temporales para calculadas dentro del método `CAMARA::preprocesar_vista`, y para uso interno de los demás métodos de la clase. Caracterizan la ubicación y orientación de la CAMARA, y su relación con el volumen de visualización. Se utilizan para acelerar ciertos cálculos que hacen parte de la creación de una proyección. Definición en la línea 177 del archivo camara.h. Referenciado por activar_povray(), generar_rayo(), imprimir(), preprocesar_vista(), y proyectar_punto(). |
|
|
Una `CAMARA` debe saber de qué tamaño es el viewport para el cual está generando una proyección, para poder modificar sus parámetros internos en función del ángulo de vision (`_fov`) y de la actual proporción de ancho/alto del viewport. Las variables internas `_ventana_xtam` y `_ventana_ytam` representan el tamańo en pixels para el viewport, y son valores que solo pueden ser cambiados por el método `CAMARA::procesar_resize`. Estos dos valores son para uso interno de la clase cámara y no pueden ser consultados (i.e. son una copia de la configuración del viewport, que debe ser administrado por la aplicación que use `CAMARA`s). Definición en la línea 146 del archivo camara.h. Referenciado por billboard_gl(), calcular_matriz_de_proyeccion(), CAMARA(), factor_font(), generar_rayo(), minmax_visible(), pintar_volumen_gl(), preprocesar_vista(), procesar_resize(), proyectar_punto(), y subbillboard_gl(). |
|
|
Ver la documentación de `_ventana_xtam`.
Definición en la línea 147 del archivo camara.h. Referenciado por billboard_gl(), calcular_matriz_de_proyeccion(), CAMARA(), generar_rayo(), minmax_visible(), pintar_volumen_gl(), preprocesar_vista(), procesar_resize(), proyectar_punto(), y subbillboard_gl(). |
|
|
Usado cuando _modo_proyeccion = CAM_PARALELA, representa un valor en aumentos, que por defecto es 1 y debe ser mayor a EPSILON.
|
|
|
Usado si `mostrar_etiqueta` es TRUE.
Definición en la línea 126 del archivo camara.h. Referenciado por billboard_gl(), CAMARA(), y leer(). |
|
|
uno de los MODOS_DE_CONTROL_CAMARA
Definición en la línea 130 del archivo camara.h. Referenciado por CAMARA(), y procesar_teclado(). |
|
|
uno de los MODOS_DE_CAMARA
Definición en la línea 129 del archivo camara.h. Referenciado por CAMARA(). |
|
|
TRUE si el nombre de la cámara se muestra sobre el viewport en la capa "cockpit" (vicera de piloto en transparente).
Definición en la línea 121 del archivo camara.h. Referenciado por billboard_gl(), CAMARA(), leer(), y procesar_teclado(). |
|
|
Para pintar_gl() -> Deberia llamarse "modo".
Definición en la línea 128 del archivo camara.h. Referenciado por CAMARA(), leer(), modelo(), pintar_gl(), y set_modelo(). |
|
|
`mostrar_etiqueta` es TRUE
Definición en la línea 124 del archivo camara.h. Referenciado por billboard_gl(), CAMARA(), y leer(). |