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 CILINDRO

#include <cilindro.h>

Diagrama de herencias de CILINDRO

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

Collaboration graph
[leyenda]
Lista de todos los miembros.

Métodos públicos

 CILINDRO (double r1, double r2, double h)
virtual ~CILINDRO ()
double interseccion (RAYO *Rayo, VECTOR &punto, VECTOR &normal)
void valores (double *r1, double *r2, double *h)
void set_valores (double r1, double r2, double h)
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)
 En este metodo se define el comportamiento por defecto de la creacion de copias de geometrias.

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)

Métodos privados

double interseccion_cono (const RAYO *in_Rayo, const double in_r, const double in_h, VECTOR &out_punto, VECTOR &out_normal)
 Este es un método que implementa una subrutina privada para `CILINDRO::interseccion`, en el caso que el cilindro represente una estructura en forma de cono.

double interseccion_cilindro (const RAYO *in_Rayo, const double in_r, const double in_h, VECTOR &out_punto, VECTOR &out_normal)
 Este es un método que implementa una subrutina privada para `CILINDRO::interseccion`, y calcula la operación para un cilindro radio `in_r`, que está alineado y centrado con respecto al eje Z y se extiende desde z=-in_r/2 hasta z=in_r/2.

double interseccion_tapa (RAYO *in_Rayo, const double in_r, const double in_h, VECTOR &out_punto, VECTOR &out_normal)
 Este es un método que implementa una subrutina privada para `CILINDRO::interseccion`, y calcula la intersección con una tapa de una estructura cónica o cilíndrica, que es paralela al plano XY, está centrada respecto al eje Z, tiene un radio in_r y está ubicada en z = in_h.


Atributos privados

double _radio1
double _radio2
double _altura
int paralelos
int meridianos
GLUquadricObj * Textura_glu
IMAGENimagen

Documentación del constructor y destructor

CILINDRO::CILINDRO double  r1,
double  r2,
double  h
 

Definición en la línea 49 del archivo cilindro.C.

References _altura, _radio1, _radio2, imagen, meridianos, paralelos, y Textura_glu.

Referenciado por crear_copia().

CILINDRO::~CILINDRO  )  [virtual]
 

Definición en la línea 63 del archivo cilindro.C.

References imagen, y Textura_glu.


Documentación de las funciones miembro

void CILINDRO::anexar_textura IMAGEN img  )  [virtual]
 

Implements PRIMITIVA_GEOMETRICA.

Definición en la línea 86 del archivo cilindro.C.

References imagen.

int CILINDRO::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.

OJO: Esto no esta implementado!

Implements PRIMITIVA_GEOMETRICA.

Definición en la línea 95 del archivo cilindro.C.

GEOMETRIA * CILINDRO::crear_copia void   )  [virtual]
 

En este metodo se define el comportamiento por defecto de la creacion de copias de geometrias.

Notese que como el metodo es virtual, puede ser redefinido por las clases que hereden de GEOMETRIA.

Implements PRIMITIVA_GEOMETRICA.

Definición en la línea 215 del archivo cilindro.C.

References _altura, _radio1, _radio2, CILINDRO(), IMAGEN::copie(), imagen, y Textura_glu.

Here is the call graph for this function:

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

Tareas Pendientes:
ASPECTOS PENDIENTES:
  • Falta el caso del cilindro truncado
  • Falta el caso del cono patas arriba

Reimplementado de GEOMETRIA_3D.

Definición en la línea 348 del archivo cilindro.h.

References _altura, _radio1, _radio2, interseccion_cilindro(), interseccion_cono(), y interseccion_tapa().

Referenciado por FLECHA::interseccion().

Here is the call graph for this function:

double CILINDRO::interseccion_cilindro const RAYO in_Rayo,
const double  in_r,
const double  in_h,
VECTOR out_punto,
VECTOR out_normal
[inline, private]
 

Este es un método que implementa una subrutina privada para `CILINDRO::interseccion`, y calcula la operación para un cilindro radio `in_r`, que está alineado y centrado con respecto al eje Z y se extiende desde z=-in_r/2 hasta z=in_r/2.

Precondición:

\[ \mathbf{Q} := in\_Rayo->destino.norma() = 1 \; \land \; in\_r > \varepsilon \]

Nótese que:

  • La ecuación canónica de un cilindro infinito longitudinal al eje Z y de radio r es:

    \[ \mathbf{C} := x ^ 2 + y ^ 2 - r ^ 2 = 0 \]

  • La solución a la ecuación cuadrática resultante es:

    \[ \begin{array}{c} A = dx ^ 2 + dy ^ 2 \\ \\ B = 2 * (ox*dx + oy * dy) \\ \\ C = ox ^ 2 + oy ^ 2 - r ^ 2 \\ \\ t = \frac{-B \pm \sqrt{B^2-4*A*C} }{2*A} \end{array} \]

Tareas Pendientes:
ASPECTOS PENDIENTES:
  • Falta entender bien y manejar el caso donde el rayo se genera dentro del cilindro.

Definición en la línea 257 del archivo cilindro.h.

References RAYO::direccion, VECTOR::normalizar(), RAYO::origen, VECTOR::x, VECTOR::y, y VECTOR::z.

Referenciado por interseccion().

Here is the call graph for this function:

double CILINDRO::interseccion_cono const RAYO in_Rayo,
const double  in_r,
const double  in_h,
VECTOR out_punto,
VECTOR out_normal
[inline, private]
 

Este es un método que implementa una subrutina privada para `CILINDRO::interseccion`, en el caso que el cilindro represente una estructura en forma de cono.

Precondición:

\[ \mathbf{Q} := in\_Rayo->destino.norma() = 1 \; \land \; in\_r > \varepsilon \; \land \; in\_h > \varepsilon \]

Nótese que:

  • La ecuación canónica de un cono con APEX en el origen, orientado respecto al eje Z y creciente en dirección -Z, con un radio en la base igual a r y una altura h es:

    \[ \mathbf{C} := x ^ 2 + y ^ 2 - (\frac{r}{h}*z) ^ 2 = 0 \]

  • La solución a la ecuación cuadrática resultante es:

    \[ \begin{array}{c} A = dx ^ 2 + dy ^ 2 - (\frac{r*dz}{h}) ^ 2 \\ \\ B = 2 * (ox*dx + oy * dy - (\frac{r * oz * dz}{h}) ^ 2) \\ \\ C = ox ^ 2 + oy ^ 2 - (\frac{r * oz}{h}) ^ 2 \\ \\ t = \frac{-B \pm \sqrt{B^2-4*A*C} }{2*A} \end{array} \]

  • La normal se puede calcular como el gradiente de la ecuación canónica:

    \[ \vec n = | \nabla \mathbf{C} | = \left | \left < \frac{\partial{\mathbf{C}}} {\partial{x}} , \; \frac{\partial{\mathbf{C}}} {\partial{y}} , \; \frac{\partial{\mathbf{C}}} {\partial{z}} \right> \right| \]

Tareas Pendientes:
ASPECTOS PENDIENTES:
  • Falta entender bien y manejar el caso donde el rayo se genera dentro del cono.

Definición en la línea 135 del archivo cilindro.h.

References RAYO::direccion, VECTOR::normalizar(), RAYO::origen, VECTOR::x, VECTOR::y, y VECTOR::z.

Referenciado por interseccion().

Here is the call graph for this function:

double CILINDRO::interseccion_tapa RAYO in_Rayo,
const double  in_r,
const double  in_h,
VECTOR out_punto,
VECTOR out_normal
[inline, private]
 

Este es un método que implementa una subrutina privada para `CILINDRO::interseccion`, y calcula la intersección con una tapa de una estructura cónica o cilíndrica, que es paralela al plano XY, está centrada respecto al eje Z, tiene un radio in_r y está ubicada en z = in_h.

Precondición:

\[ \mathbf{Q} := in\_Rayo->destino.norma() = 1 \; \land \; in\_r > \varepsilon \; \land \; in\_h > \varepsilon \]

Siempre retorna una normal apuntando en la dirección +Z. Si se trata de una tapa inferior, la función usuaria de este método deberá invertir la normal.

Definición en la línea 88 del archivo cilindro.h.

References RAYO::direccion, RAYO::origen, VECTOR::x, VECTOR::y, y VECTOR::z.

Referenciado por interseccion().

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

Reimplementado de GEOMETRIA.

Definición en la línea 109 del archivo cilindro.C.

References _altura, _radio1, _radio2, VECTOR::x, VECTOR::y, y VECTOR::z.

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

Implements PRIMITIVA_GEOMETRICA.

Definición en la línea 197 del archivo cilindro.C.

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

Implements PRIMITIVA_GEOMETRICA.

Definición en la línea 126 del archivo cilindro.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::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.

Here is the call graph for this function:

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

Implements PRIMITIVA_GEOMETRICA.

Definición en la línea 204 del archivo cilindro.C.

References _altura, _radio1, y _radio2.

void CILINDRO::set_valores double  r1,
double  r2,
double  h
 

Definición en la línea 78 del archivo cilindro.C.

References _altura, _radio1, y _radio2.

void CILINDRO::valores double *  r1,
double *  r2,
double *  h
 

Definición en la línea 71 del archivo cilindro.C.

References _altura, _radio1, y _radio2.


Documentación de los datos miembro

double CILINDRO::_altura [private]
 

Definición en la línea 39 del archivo cilindro.h.

Referenciado por CILINDRO(), crear_copia(), interseccion(), minmax(), pintar_povray(), set_valores(), y valores().

double CILINDRO::_radio1 [private]
 

Definición en la línea 37 del archivo cilindro.h.

Referenciado por CILINDRO(), crear_copia(), interseccion(), minmax(), pintar_povray(), set_valores(), y valores().

double CILINDRO::_radio2 [private]
 

Definición en la línea 38 del archivo cilindro.h.

Referenciado por CILINDRO(), crear_copia(), interseccion(), minmax(), pintar_povray(), set_valores(), y valores().

IMAGEN* CILINDRO::imagen [private]
 

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

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

int CILINDRO::meridianos [private]
 

Definición en la línea 42 del archivo cilindro.h.

Referenciado por CILINDRO().

int CILINDRO::paralelos [private]
 

Definición en la línea 41 del archivo cilindro.h.

Referenciado por CILINDRO().

GLUquadricObj* CILINDRO::Textura_glu [private]
 

Definición en la línea 43 del archivo cilindro.h.

Referenciado por CILINDRO(), crear_copia(), pintar_gl(), y ~CILINDRO().


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.