#include <esfera.h>
Diagrama de herencias de ESFERA
Métodos públicos | |
ESFERA (double r) | |
Constructora por defecto de la clase ESFERA. | |
virtual | ~ESFERA () |
Destructora de la clase ESFERA. | |
double | interseccion (RAYO *Rayo, VECTOR &punto, VECTOR &normal) |
Implementación de la operación geométrica básica de intersección de un `RAYO` con una `GEOMETRIA`. | |
double | radio (void) |
Retorna el radio de la ESFERA `*this`. | |
void | set_radio (double r) |
Permite al usuario especificar un nuevo radio para la ESFERA `*this`, siempre y cuando sea positivo y mayor a EPSILON. | |
void | set_lod (unsigned long int lod) |
Si `lod` es un número mayor o igual a 1, se configura la esfera para que cuando se represente en polígonos de caras planas, se genere un numero de triángulos igual o levemente superior a lod. | |
void | anexar_textura (IMAGEN *img) |
Agrega a la ESFERA `*this` una IMAGEN. | |
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) |
Se crea una segunda ESFERA en su propio contexto de memoria, y se copia de tal manera que el valor de retorno contiene la misma información que `*this`. | |
void | minmax (VECTOR *min, VECTOR *max) |
void | pintar_gl (CALIDAD_VISUAL *Calidad, MATERIAL *Material, CAMARA *Camara) |
Este método genera las primitivas OpenGL necesarias para construir una representación poligonal de la esfera actual, teniendo en cuenta su actual configuración `_lod`. | |
void | pintar_povray (FILE *fd) |
Este método genera una representación de la esfera actual en formato POVRAY, y lo anexa a un archivo `*fd`, que debe estar abierto en modo de escritura de texto. | |
void | pintar_aqz (FILE *fd) |
Este método genera una representación de la esfera actual en formato AQUYNZA, y lo anexa a un archivo `*fd`, que debe estar abierto en modo de escritura de texto. | |
Métodos privados | |
void | activar_lod (void) |
Este método calcula el número de `_paralelos` y `_meridianos` más adecuado para resultar en un nivel de detalle de `_lod` triangulos. | |
Atributos privados | |
double | _radio |
unsigned long int | _lod |
int | _paralelos |
int | _meridianos |
GLUquadricObj * | Textura_glu |
IMAGEN * | imagen |
|
Constructora por defecto de la clase ESFERA. ATENCIÓN: inicializa los valores `_lod`, `_paralelos` y `_meridianos` de manera arbitraria. Podría esto hacerce mejor si se usaran parámetros con valores por defecto? Definición en la línea 34 del archivo esfera.C. References _lod, _meridianos, _paralelos, _radio, imagen, y Textura_glu. Referenciado por crear_copia(). |
|
Destructora de la clase ESFERA. Nótese que si se había asignado una imagen a este objeto, la imagen es destruida. Definición en la línea 54 del archivo esfera.C. References imagen, y Textura_glu. |
|
Este método calcula el número de `_paralelos` y `_meridianos` más adecuado para resultar en un nivel de detalle de `_lod` triangulos. En este momento, el algoritmo es muy sencillo, y puede mejorarse. Definición en la línea 99 del archivo esfera.C. References _lod, _meridianos, y _paralelos. Referenciado por set_lod(). |
|
Agrega a la ESFERA `*this` una IMAGEN. Nótese que se considera que en adelante la imagen será agregada a la esfera, por lo que debe existir una imagen diferente para cada esfera. ESTE COMPORTAMIENTO DEBE REVISARSE, ES INEFICIENTE! Implements PRIMITIVA_GEOMETRICA. Definición en la línea 139 del archivo esfera.C. References imagen. |
|
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 PRIMITIVA_GEOMETRICA. |
|
Se crea una segunda ESFERA en su propio contexto de memoria, y se copia de tal manera que el valor de retorno contiene la misma información que `*this`.
Implements PRIMITIVA_GEOMETRICA. Definición en la línea 291 del archivo esfera.C. References _radio, IMAGEN::copie(), ESFERA(), imagen, y Textura_glu. |
Here is the call graph for this function:
|
Implementación de la operación geométrica básica de intersección de un `RAYO` con una `GEOMETRIA`. Especificación de parámetros de entrada:
Precondición:
Especificación de parámetros de salida:
Ésta función de intersección de esfera está basada en la sustitución de la ecuación paramétrica 3D de la línea constituída por el conjunto de puntos tales que
en la fórmula de la superficie de una esfera, cuyos puntos se caracterizan por la fórmula
Postcondición: Si se calcula n:
Bugs y pendientes:
Es una versión adaptada del proyecto "htrace" de Hernando Barragan (Universidad de los Andes, 1997). Reimplementado de GEOMETRIA_3D. Definición en la línea 77 del archivo esfera.h. References _radio, RAYO::direccion, VECTOR::normalizar(), RAYO::origen, VECTOR::x, VECTOR::y, y VECTOR::z. |
Here is the call graph for this function:
|
Reimplementado de GEOMETRIA. |
|
Este método genera una representación de la esfera actual en formato AQUYNZA, y lo anexa a un archivo `*fd`, que debe estar abierto en modo de escritura de texto.
Implements PRIMITIVA_GEOMETRICA. Definición en la línea 276 del archivo esfera.C. References _radio, y simplifique_real(). |
Here is the call graph for this function:
|
Este método genera las primitivas OpenGL necesarias para construir una representación poligonal de la esfera actual, teniendo en cuenta su actual configuración `_lod`.
Implements PRIMITIVA_GEOMETRICA. Definición en la línea 190 del archivo esfera.C. References _meridianos, _paralelos, _radio, CALIDAD_VISUAL::activar_bordes_gl(), CALIDAD_VISUAL::activar_caras_gl(), IMAGEN::activar_gl(), MATERIAL::activar_gl(), CALIDAD_VISUAL::activar_textura_gl(), CALIDAD_VISUAL::calidad_caras, CALIDAD_VISUAL::con_bordes, CALIDAD_VISUAL::con_cajas, CALIDAD_VISUAL::con_caras, CALIDAD_VISUAL::con_caustics, CALIDAD_VISUAL::con_textura, CVC_CONSTANTE, CVC_FLAT, CVC_SHADE, GLenum, imagen, y Textura_glu. Referenciado por MESH::pintar_debug_vertice(). |
Here is the call graph for this function:
|
Este método genera una representación de la esfera actual en formato POVRAY, y lo anexa a un archivo `*fd`, que debe estar abierto en modo de escritura de texto.
Implements PRIMITIVA_GEOMETRICA. Definición en la línea 261 del archivo esfera.C. References _radio. |
|
Retorna el radio de la ESFERA `*this`. Postcondición:
Definición en la línea 67 del archivo esfera.C. References _radio. |
|
Si `lod` es un número mayor o igual a 1, se configura la esfera para que cuando se represente en polígonos de caras planas, se genere un numero de triángulos igual o levemente superior a lod. Si lod es 0, el cálculo se realizará de manera automática dependiendo del porcentaje de ocupación del viewport para la camara de visualizacion. Definición en la línea 124 del archivo esfera.C. References _lod, y activar_lod(). |
Here is the call graph for this function:
|
Permite al usuario especificar un nuevo radio para la ESFERA `*this`, siempre y cuando sea positivo y mayor a EPSILON. Precondición:
Definición en la línea 82 del archivo esfera.C. References _radio. |
|
Definición en la línea 38 del archivo esfera.h. Referenciado por activar_lod(), ESFERA(), y set_lod(). |
|
Definición en la línea 40 del archivo esfera.h. Referenciado por activar_lod(), ESFERA(), y pintar_gl(). |
|
Definición en la línea 39 del archivo esfera.h. Referenciado por activar_lod(), ESFERA(), y pintar_gl(). |
|
Definición en la línea 37 del archivo esfera.h. Referenciado por clasificar_punto(), crear_copia(), ESFERA(), interseccion(), minmax(), pintar_aqz(), pintar_gl(), pintar_povray(), radio(), y set_radio(). |
|
Definición en la línea 44 del archivo esfera.h. Referenciado por anexar_textura(), crear_copia(), ESFERA(), pintar_gl(), y ~ESFERA(). |
|
Definición en la línea 42 del archivo esfera.h. Referenciado por crear_copia(), ESFERA(), pintar_gl(), y ~ESFERA(). |