#include <cosa.h>
Diagrama de herencias de COSA
Métodos públicos | |
COSA () | |
Constructora por defecto. | |
virtual | ~COSA () |
Destructora de clase. | |
virtual COSA * | crear_copia (void) |
Clona una COSA. | |
double | masa (void) |
double | ke (void) |
virtual BOOLEAN | consultar_variable (const char *nombre_variable, int &tipo, void **ref) |
< Funcion de introspeccion | |
BOOLEAN | actualizar_variable (const char *nombre_variable, int tipo, void *ref) |
Éste metodo, junto con `consultar_variable` es el núcleo del esquema de introspección AQUYNZA. | |
char * | nombre_padre (void) |
void | asociar_padre (COSA *p) |
BOOLEAN | estoy_fijo (void) |
int | tipo_de_cosa (void) |
VECTOR | posicion (void) |
Retorna el centro de la COSA en coordenadas relativas al padre. | |
virtual VECTOR | posicion_absoluta (VECTOR p) |
Retorna las coordenadas absolutas de un punto que en el sistema local de coor- denadas de esta COSA esta en la posicion `p`. | |
virtual QUATERNION | orientacion_absoluta (void) |
Retorna la orientacion absoluta de esta cosa. | |
VECTOR | velocidad_absoluta (void) |
void | set_posicion_absoluta (VECTOR p) |
void | set_velocidad_absoluta (VECTOR v) |
virtual VECTOR | velocidad_angular_absoluta (void) |
virtual void | set_velocidad_angular_absoluta (VECTOR omega) |
virtual MATRIZ_4x4 | tensor_de_inercia (void) |
virtual GEOMETRIA * | geometria (void)=0 |
void | anexar_fuerza (VECTOR fuerza, VECTOR p) |
OJO: La interpretacion de los parametros es MUY importante: - `fuerza` es un vector cuya direccion indica la direccion de la fuerza de accion que se aplica sobre la cosa, y cuya magnitud esta indicada en unidades de NEWTONS! ([N]=([kg]*[m])/([s]^2)) - `p` es el punto donde se ejerce la fuerza, y esta dado en METROS de distancia sobre la base <i, j, k>, es decir, en COORDENADAS DEL MUNDO! | |
virtual void | aplicar_campo_vectorial (CAMPO_VECTORIAL *Campo) |
virtual void | aplicar_drag (double Kd) |
double | altura (VECTOR p) |
Esta operacion solo tiene sentido cuando la COSA actual tiene un padre que establesca un marco de referencia. | |
virtual void | actualizar (double delta_t)=0 |
virtual int | ODE_numero_de_variables_de_estado (void)=0 |
virtual void | ODE_reportar_variables_de_estado (double *Datos)=0 |
virtual void | ODE_actualizar_variables_de_estado (double *Datos)=0 |
virtual void | ODE_calcular_la_primera_derivada (double *Datos)=0 |
virtual void | minmax (VECTOR *min, VECTOR *max)=0 |
virtual double | interseccion (RAYO *Rayo, VECTOR *Punto, VECTOR *Normal) |
Si no se programa lo contrario, una cosa es fantasma! | |
virtual void | pintar_gl (CALIDAD_VISUAL *Calidad, CAMARA *Camara)=0 |
virtual void | pintar_povray (FILE *fd) |
MATERIAL * | material (void) |
COLOR | color (void) |
virtual BOOLEAN | leer (TOKENIZADOR *Sabiondo)=0 |
virtual BOOLEAN | resolver (LISTA< COSA * > *Cosas) |
virtual void | grabar (FILE *fd)=0 |
Métodos protegidos | |
void | limpiar_fuerzas (void) |
Inicializa las `fuerzas_externas`. | |
BOOLEAN | leer_basico (TOKENIZADOR *Sabiondo, char *cad, BOOLEAN *cmc) |
Este metodo carga, a partir de informacion de un archivo en formato .aqz, los datos necesarios para configurar los campos de COSA que son heredados por sus subclases (i.e. | |
void | grabar_basico (FILE *fd) |
Atributos protegidos | |
VECTOR | _posicion |
Posicion del centro geometrico respecto a la cosa padre! | |
VECTOR | _velocidad |
Velocidad lineal del centro de masa. | |
double | _masa |
Masa total (no indica distribucion de masa). | |
double | _ke |
Coeficiente de restitucion (elasticidad en colision, va de 0 a 1). | |
BOOLEAN | _estoy_fijo |
Flag que indica que a esta COSA no la afectan las fuerzas. | |
MATERIAL * | Material |
Determina la apariencia de la superficie. | |
COLOR | _color |
Modifica el color difuso del Material. | |
COSA * | Padre |
Usado en cosas compuestas (?) OJO: y las UNIONes que? | |
char * | _nombre_padre |
int | _tipo_de_cosa |
Una de los CATEGORIAS_COSAS. | |
LISTA< FUERZA_PUNTO * > | lista_fuerzas_externas |
fuerzas que actuan sobre esta COSA | |
Métodos privados | |
void | leer_material (char *nombre) |
Es de vital importancia para el desarrollador de aplicaciones AQUYNZA tener muy en claro las definiciones de ésta clase:
En la clase `COSA` solo se representan los atributos comunes para todos los tipos de `COSA`. Observe la jerarquía de subclases de `COSA` para ver cómo se maneja la taxonomía propuesta en el modelo AQUYNZA.
Es importante tener en cuenta que la posición indica el centro geométrico (el origen de coordenadas de la `Geometria`). Debido a que los cálculos físicos se basan en el centro de masa, es necesario representar la posición del centro de masa en aquellas cosas con geometrias de 1, 2 y 3 dimensiones (vea las subclases del caso).
Definición en la línea 67 del archivo cosa.h.
|
Constructora por defecto.
Definición en la línea 50 del archivo cosa.C. References _color, _estoy_fijo, _ke, _masa, _nombre_padre, _posicion, _tipo_de_cosa, _velocidad, CC_DESCONOCIDA, MATERIAL::difusa(), LOS_materiales, Material, Padre, VECTOR::x, VECTOR::y, y VECTOR::z. |
Here is the call graph for this function:
|
Destructora de clase.
|
|
Implemented in MASA_PUNTUAL, COSA_RIGIDA, COSA_FLEXIBLE, TELA, and AVATAR_QUAKE. |
|
Éste metodo, junto con `consultar_variable` es el núcleo del esquema de introspección AQUYNZA. La introspección permite consultar y/o actualizar cualquier variable de cualquier tipo mediante una interfaz unificada. Éste metodo rétorna TRUE si la operación de acutalización en introspección fue válida o FALSE si no (ya sea porque el tipo de datos era incorrecto o el nombre de variable suministrado no existe dentro de la clase). Este método deberá ser sobrecargado por las clases que se deseen entren al esquema de introspección AQUYNZA (las cuales además deben heredar de ésta clase). El comportamiento por defecto es tener la introspección desactivada (siempre retornar FALSE). Reimplementado de ENTIDAD. Reimplementado en COSA_RIGIDA. Definición en la línea 201 del archivo cosa.C. References _masa, _posicion, altura(), Padre, posicion_absoluta(), set_velocidad_absoluta(), T_FLOAT, T_VECTOR, TMP_vector, VECTOR::x, VECTOR::y, y VECTOR::z. Referenciado por COSA_RIGIDA::actualizar_variable(). |
Here is the call graph for this function:
|
Esta operacion solo tiene sentido cuando la COSA actual tiene un padre que establesca un marco de referencia. Usualmente esto retorna 0 y se redefine para ESPACIOs. Definición en la línea 90 del archivo cosa.C. References _tipo_de_cosa, y CC_ESPACIO_ABIERTO. Referenciado por actualizar_variable(), y consultar_variable(). |
|
OJO: La interpretacion de los parametros es MUY importante: - `fuerza` es un vector cuya direccion indica la direccion de la fuerza de accion que se aplica sobre la cosa, y cuya magnitud esta indicada en unidades de NEWTONS! ([N]=([kg]*[m])/([s]^2)) - `p` es el punto donde se ejerce la fuerza, y esta dado en METROS de distancia sobre la base <i, j, k>, es decir, en COORDENADAS DEL MUNDO!
Definición en la línea 231 del archivo cosa.h. References LISTA< FUERZA_PUNTO * >::anx(), FUERZA_PUNTO::fuerza, lista_fuerzas_externas, y FUERZA_PUNTO::punto. Referenciado por RESORTE::actualizar(), ARTICULACION::actualizar(), aplicar_campo_vectorial(), COSA_RIGIDA::aplicar_drag(), y aplicar_drag(). |
Here is the call graph for this function:
|
Reimplementado en TELA. Definición en la línea 431 del archivo cosa.C. References _masa, anexar_fuerza(), posicion_absoluta(), y CAMPO_VECTORIAL::valor(). Referenciado por TELA::aplicar_campo_vectorial(). |
Here is the call graph for this function:
|
Reimplementado en COSA_RIGIDA, y TELA. Definición en la línea 441 del archivo cosa.C. References anexar_fuerza(), posicion_absoluta(), y velocidad_absoluta(). Referenciado por TELA::aplicar_drag(). |
Here is the call graph for this function:
|
Definición en la línea 261 del archivo cosa.C. References Padre. |
|
Definición en la línea 86 del archivo cosa.C. References _color. Referenciado por ESPACIO_ABIERTO::anexar_objetos_rayables(). |
|
< Funcion de introspeccion 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. Reimplementado en MASA_PUNTUAL, y COSA_RIGIDA. Definición en la línea 153 del archivo cosa.C. References _masa, _posicion, _velocidad, altura(), Padre, posicion_absoluta(), T_FLOAT, T_VECTOR, TMP_double, TMP_vector, VECTOR::x, VECTOR::y, y VECTOR::z. Referenciado por MASA_PUNTUAL::consultar_variable(), COSA_RIGIDA::consultar_variable(), y COSA_RIGIDA::posicion_absoluta(). |
Here is the call graph for this function:
|
Clona una COSA. Notese que como el metodo es virtual, puede ser redefinido por las clases que hereden de COSA. Reimplementado en MASA_PUNTUAL, y COSA_RIGIDA. |
|
Definición en la línea 85 del archivo cosa.C. References _estoy_fijo, y BOOLEAN. Referenciado por detectar_par_colision(), y MANEJADOR_CONFLICTOS_COLISION::resolver_conflictos(). |
|
Implemented in MASA_PUNTUAL, COSA_RIGIDA, COSA_FLEXIBLE, TELA, and AVATAR_QUAKE. |
|
Implemented in MASA_PUNTUAL, COSA_RIGIDA, TELA, and AVATAR_QUAKE. |
|
Definición en la línea 301 del archivo cosa.C. References _ke, _masa, _posicion, _velocidad, simplifique_real(), VECTOR::x, VECTOR::y, y VECTOR::z. Referenciado por COSA_RIGIDA::grabar(). |
Here is the call graph for this function:
|
Si no se programa lo contrario, una cosa es fantasma!
Reimplementado en COSA_RIGIDA, ESPACIO_ABIERTO, y ESPACIO. Definición en la línea 451 del archivo cosa.C. Referenciado por detector_colision_puntual_rigida(). |
|
Definición en la línea 201 del archivo cosa.h. References _ke. Referenciado por MANEJADOR_CONFLICTOS_COLISION::resolver_conflictos(). |
|
Implemented in MASA_PUNTUAL, COSA_RIGIDA, COSA_FLEXIBLE, TELA, and AVATAR_QUAKE. |
|
Este metodo carga, a partir de informacion de un archivo en formato .aqz, los datos necesarios para configurar los campos de COSA que son heredados por sus subclases (i.e. aquellos "protected"). Este metodo se utiliza por las diversas versiones de `leer` de las subclases y asi, al reutilizar funcionalidad, las simplifica. Definición en la línea 325 del archivo cosa.C. References _color, _estoy_fijo, _ke, _masa, _nombre_padre, _posicion, _velocidad, COLOR::b, des_comille(), COLOR::g, leer_material(), COLOR::r, TOKENIZADOR::siguiente_token(), TK_CADENA, TK_DESCONOCIDO, TK_IDENTIFICADOR, TK_NUMERO, TK_VECTOR_FIN, TK_VECTOR_INICIO, VECTOR::x, VECTOR::y, y VECTOR::z. Referenciado por TELA::leer(), MASA_PUNTUAL::leer(), COSA_RIGIDA::leer(), y ESPACIO_ABIERTO::leer_espacio(). |
Here is the call graph for this function:
|
Definición en la línea 284 del archivo cosa.C. References des_comille(), LOS_materiales, Material, y ENTIDAD::nombre(). Referenciado por leer_basico(). |
Here is the call graph for this function:
|
Inicializa las `fuerzas_externas`.
Definición en la línea 420 del archivo cosa.C. References LISTA< FUERZA_PUNTO * >::elim(), lista_fuerzas_externas, y LISTA< FUERZA_PUNTO * >::tam(). Referenciado por MASA_PUNTUAL::ODE_calcular_la_primera_derivada(), y COSA_RIGIDA::ODE_calcular_la_primera_derivada(). |
Here is the call graph for this function:
|
Definición en la línea 195 del archivo cosa.h. References _masa. Referenciado por MANEJADOR_CONFLICTOS_COLISION::resolver_conflictos(). |
|
Definición en la línea 87 del archivo cosa.C. References Material. Referenciado por ESPACIO_ABIERTO::anexar_objetos_rayables(). |
|
Implemented in MASA_PUNTUAL, COSA_RIGIDA, COSA_FLEXIBLE, and TELA. Referenciado por detectar_par_colision(). |
|
Definición en la línea 256 del archivo cosa.C. References _nombre_padre. |
|
Implements ECUACION_DIFERENCIAL. Implemented in MASA_PUNTUAL, COSA_RIGIDA, COSA_FLEXIBLE, and TELA. |
|
Implements ECUACION_DIFERENCIAL. Implemented in MASA_PUNTUAL, COSA_RIGIDA, COSA_FLEXIBLE, and TELA. |
|
Implements ECUACION_DIFERENCIAL. Implemented in MASA_PUNTUAL, COSA_RIGIDA, COSA_FLEXIBLE, and TELA. |
|
Implements ECUACION_DIFERENCIAL. Implemented in MASA_PUNTUAL, COSA_RIGIDA, COSA_FLEXIBLE, and TELA. |
|
Retorna la orientacion absoluta de esta cosa. OJO: Notese que la rotacion compuesta de dos rotaciones expresadas mediante cuaterniones es la multiplicacion de los cuaterniones. Reimplementado en COSA_RIGIDA. Definición en la línea 132 del archivo cosa.C. References QUATERNION::normalizar(), y Padre. Referenciado por COSA_RIGIDA::orientacion_absoluta(). |
Here is the call graph for this function:
|
Implemented in MASA_PUNTUAL, COSA_RIGIDA, COSA_FLEXIBLE, TELA, AVATAR_QUAKE, ESPACIO_ABIERTO, and ESPACIO. |
|
Reimplementado en MASA_PUNTUAL, COSA_RIGIDA, COSA_FLEXIBLE, TELA, y AVATAR_QUAKE. |
|
Retorna el centro de la COSA en coordenadas relativas al padre. OJO: Esto es respecto al centro geometrico de la COSA. Definición en la línea 104 del archivo cosa.C. References _posicion. Referenciado por TELA::leer_malla(). |
|
Retorna las coordenadas absolutas de un punto que en el sistema local de coor- denadas de esta COSA esta en la posicion `p`. OJO: Esto es respecto al centro geometrico de la COSA. Reimplementado en COSA_RIGIDA. Definición en la línea 115 del archivo cosa.C. References _posicion. Referenciado por RESORTE::actualizar(), ARTICULACION::actualizar(), actualizar_variable(), aplicar_campo_vectorial(), aplicar_drag(), consultar_variable(), detector_colision_puntual_rigida(), TELA::leer_malla(), TELA::minmax(), TELA::pintar_gl(), RESORTE::pintar_gl(), ARTICULACION::pintar_gl(), RESORTE::pintar_povray(), ARTICULACION::pintar_povray(), y MANEJADOR_CONFLICTOS_COLISION::resolver_conflictos(). |
|
Reimplementado en COSA_RIGIDA. |
|
Definición en la línea 223 del archivo cosa.h. References _posicion. Referenciado por detector_colision_puntual_rigida(). |
|
Definición en la línea 215 del archivo cosa.h. References _velocidad. Referenciado por actualizar_variable(), y MANEJADOR_CONFLICTOS_COLISION::resolver_conflictos(). |
|
Reimplementado en COSA_RIGIDA. Definición en la línea 472 del archivo cosa.C. Referenciado por MANEJADOR_CONFLICTOS_COLISION::resolver_conflictos(). |
|
Reimplementado en COSA_RIGIDA. Definición en la línea 478 del archivo cosa.C. Referenciado por MANEJADOR_CONFLICTOS_COLISION::resolver_conflictos(). |
|
Definición en la línea 84 del archivo cosa.C. References _tipo_de_cosa. |
|
Definición en la línea 207 del archivo cosa.h. References _velocidad. Referenciado por RESORTE::actualizar(), ARTICULACION::actualizar(), COSA_RIGIDA::aplicar_drag(), aplicar_drag(), detector_colision_puntual_rigida(), y MANEJADOR_CONFLICTOS_COLISION::resolver_conflictos(). |
|
Reimplementado en COSA_RIGIDA. Definición en la línea 463 del archivo cosa.C. Referenciado por MANEJADOR_CONFLICTOS_COLISION::resolver_conflictos(). |
|
Modifica el color difuso del Material.
Definición en la línea 118 del archivo cosa.h. Referenciado por color(), COSA(), TELA::leer(), MASA_PUNTUAL::leer(), COSA_RIGIDA::leer(), leer_basico(), ESPACIO_ABIERTO::leer_espacio(), MASA_PUNTUAL::pintar_gl(), COSA_RIGIDA::pintar_gl(), MASA_PUNTUAL::pintar_povray(), y COSA_RIGIDA::pintar_povray(). |
|
Flag que indica que a esta COSA no la afectan las fuerzas.
Definición en la línea 115 del archivo cosa.h. Referenciado por COSA(), estoy_fijo(), leer_basico(), TELA::leer_malla(), MASA_PUNTUAL::ODE_actualizar_variables_de_estado(), COSA_RIGIDA::ODE_actualizar_variables_de_estado(), MASA_PUNTUAL::ODE_calcular_la_primera_derivada(), COSA_RIGIDA::ODE_calcular_la_primera_derivada(), MASA_PUNTUAL::ODE_numero_de_variables_de_estado(), COSA_RIGIDA::ODE_numero_de_variables_de_estado(), MASA_PUNTUAL::ODE_reportar_variables_de_estado(), y COSA_RIGIDA::ODE_reportar_variables_de_estado(). |
|
Coeficiente de restitucion (elasticidad en colision, va de 0 a 1).
Definición en la línea 111 del archivo cosa.h. Referenciado por COSA(), grabar_basico(), ke(), TELA::leer(), y leer_basico(). |
|
Masa total (no indica distribucion de masa).
Definición en la línea 110 del archivo cosa.h. Referenciado por actualizar_variable(), aplicar_campo_vectorial(), consultar_variable(), COSA(), grabar_basico(), TELA::leer(), leer_basico(), masa(), MASA_PUNTUAL::ODE_calcular_la_primera_derivada(), COSA_RIGIDA::ODE_calcular_la_primera_derivada(), y COSA_RIGIDA::resolver_tensor_de_inercia(). |
|
Definición en la línea 121 del archivo cosa.h. Referenciado por COSA(), leer_basico(), nombre_padre(), COSA_RIGIDA::resolver(), COSA_RIGIDA::~COSA_RIGIDA(), MASA_PUNTUAL::~MASA_PUNTUAL(), y TELA::~TELA(). |
|
Posicion del centro geometrico respecto a la cosa padre!
Definición en la línea 107 del archivo cosa.h. Referenciado por actualizar_variable(), MASA_PUNTUAL::consultar_variable(), consultar_variable(), COSA(), grabar_basico(), leer_basico(), TELA::leer_malla(), MASA_PUNTUAL::minmax(), MASA_PUNTUAL::ODE_actualizar_variables_de_estado(), COSA_RIGIDA::ODE_actualizar_variables_de_estado(), COSA_RIGIDA::ODE_calcular_la_primera_derivada(), MASA_PUNTUAL::ODE_reportar_variables_de_estado(), COSA_RIGIDA::ODE_reportar_variables_de_estado(), MASA_PUNTUAL::pintar_gl(), MASA_PUNTUAL::pintar_povray(), posicion(), COSA_RIGIDA::posicion_absoluta(), posicion_absoluta(), set_posicion_absoluta(), y COSA_RIGIDA::tick(). |
|
Una de los CATEGORIAS_COSAS.
Definición en la línea 124 del archivo cosa.h. Referenciado por altura(), COSA(), COSA_RIGIDA::COSA_RIGIDA(), ESPACIO_ABIERTO::ESPACIO_ABIERTO(), MASA_PUNTUAL::MASA_PUNTUAL(), TELA::TELA(), y tipo_de_cosa(). |
|
Velocidad lineal del centro de masa.
Definición en la línea 109 del archivo cosa.h. Referenciado por consultar_variable(), COSA(), grabar_basico(), leer_basico(), TELA::leer_malla(), MASA_PUNTUAL::ODE_actualizar_variables_de_estado(), COSA_RIGIDA::ODE_actualizar_variables_de_estado(), MASA_PUNTUAL::ODE_calcular_la_primera_derivada(), COSA_RIGIDA::ODE_calcular_la_primera_derivada(), MASA_PUNTUAL::ODE_reportar_variables_de_estado(), COSA_RIGIDA::ODE_reportar_variables_de_estado(), set_velocidad_absoluta(), y velocidad_absoluta(). |
|
fuerzas que actuan sobre esta COSA
Definición en la línea 126 del archivo cosa.h. Referenciado por anexar_fuerza(), limpiar_fuerzas(), MASA_PUNTUAL::ODE_calcular_la_primera_derivada(), y COSA_RIGIDA::ODE_calcular_la_primera_derivada(). |
|
Determina la apariencia de la superficie.
Definición en la línea 117 del archivo cosa.h. Referenciado por COSA(), TELA::leer(), MASA_PUNTUAL::leer(), COSA_RIGIDA::leer(), ESPACIO_ABIERTO::leer_espacio(), leer_material(), material(), TELA::pintar_gl(), COSA_RIGIDA::pintar_gl(), y COSA_RIGIDA::pintar_povray(). |
|
Usado en cosas compuestas (?) OJO: y las UNIONes que?
Definición en la línea 119 del archivo cosa.h. Referenciado por actualizar_variable(), asociar_padre(), consultar_variable(), COSA(), COSA_RIGIDA::orientacion_absoluta(), orientacion_absoluta(), COSA_RIGIDA::posicion_absoluta(), COSA_RIGIDA::resolver(), y COSA_RIGIDA::set_orientacion_absoluta(). |