#include <cosa.h>
Diagrama de herencias de COSA_RIGIDA
Métodos públicos | |
COSA_RIGIDA () | |
virtual | ~COSA_RIGIDA () |
virtual COSA * | crear_copia (void) |
OJO: Redefine la version de la clase COSA. | |
BOOLEAN | consultar_variable (const char *nombre_variable, int &tipo, void **ref) |
OJO: Esta funcion, por la manera en que usa variables globales, hace que el programa no sea "thread-safe"! | |
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. | |
GEOMETRIA * | geometria (void) |
VECTOR | posicion_absoluta (VECTOR p) |
Retorna las coordenadas absolutas de un punto que en el sistema local de coordenadas de esta COSA esta en la posicion `p`. | |
VECTOR | velocidad_angular_absoluta (void) |
void | set_velocidad_angular_absoluta (VECTOR omega) |
MATRIZ_4x4 | tensor_de_inercia (void) |
QUATERNION | orientacion_absoluta (void) |
Retorna la orientacion absoluta de esta cosa. | |
void | set_orientacion_absoluta (QUATERNION q) |
OJO: ESTO NO ESTA FUNCIONANDO CUANDO ESTA COSA TIENE PADRE! | |
void | aplicar_drag (double Kd) |
void | tick (void) |
void | actualizar (double delta_t) |
int | ODE_numero_de_variables_de_estado (void) |
OJO: Notese que las variables de estado de interes para el solver son: pocision, velocidad, orientacion y velocidad_rotacional y cada una son un vector de 3 posiciones, excepto la orientacion, que ademas es un quaternion y tiene magnitud. | |
void | ODE_reportar_variables_de_estado (double *Datos) |
void | ODE_actualizar_variables_de_estado (double *Datos) |
void | ODE_calcular_la_primera_derivada (double *Datos) |
ATENCION: ESTE ES EL METODO CENTRAL DE LA SIMULACION FISICA DE LAS COSAS! A continuacion, pocas lineas de codigo y muchas de comentarios intentando dejar en claro todo. | |
void | minmax (VECTOR *min, VECTOR *max) |
La operacion `minmax` de la clase GEOMETRIA calcula el paralelogramo envolvente de esta COSA en coordenadas relativas a la COSA. | |
virtual double | interseccion (RAYO *Rayo, VECTOR *Punto, VECTOR *Normal) |
Dado un Rayo, calcula el punto y la normal de la interseccion de dicho rayo con la geometria de dicha cosa. | |
void | pintar_gl (CALIDAD_VISUAL *Calidad, CAMARA *Camara) |
PRE: GL esta en GL_MODELVIEW. | |
void | pintar_povray (FILE *fd) |
BOOLEAN | leer (TOKENIZADOR *Sabiondo) |
BOOLEAN | resolver (LISTA< COSA * > *Cosa) |
void | grabar (FILE *fd) |
Métodos protegidos | |
BOOLEAN | leer_rigida (TOKENIZADOR *Sabiondo, char *cad) |
Esto es un procedimiento de `leer`. | |
void | resolver_tensor_de_inercia (void) |
Esto es un procedimiento de `leer`. | |
Atributos protegidos | |
VECTOR | _centro_de_masa |
VECTOR | _velocidad_angular |
QUATERNION | _orientacion |
MATRIZ_4x4 | tensor_de_inercia_0 |
Atributos privados | |
GEOMETRIA * | Geometria |
double | _ultimo_Kd |
Ademas de lo que posee una `MASA_PUNTUAL`, representa orientación y velocidad angular, y la distribución de su masa.
Nótese que la dimensión de una `COSA_RIGIDA` está dada por las dimensiones de su `GEOMETRIA`.
Definición en la línea 302 del archivo cosa.h.
|
Definición en la línea 58 del archivo cosa_rigida.C. References _centro_de_masa, _orientacion, COSA::_tipo_de_cosa, _ultimo_Kd, _velocidad_angular, CC_COSA_RIGIDA, Geometria, MATRIZ_4x4::identidad(), QUATERNION::importar_angulo_eje(), tensor_de_inercia_0, VECTOR::x, VECTOR::y, y VECTOR::z. |
Here is the call graph for this function:
|
Definición en la línea 84 del archivo cosa_rigida.C. References COSA::_nombre_padre. |
|
Implements COSA. Definición en la línea 948 del archivo cosa_rigida.C. References _ultimo_Kd, _velocidad_angular, SOLVER_EULER::ejecutar_solucion(), y VECTOR::norma(). |
Here is the call graph for this function:
|
É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 COSA. Definición en la línea 169 del archivo cosa_rigida.C. References _orientacion, COSA::actualizar_variable(), MATRIZ_4x4::exportar_angulos_euler(), MATRIZ_4x4::exportar_quaternion(), MATRIZ_4x4::importar_quaternion(), orientacion_absoluta(), MATRIZ_4x4::rotacion_angulos_euler(), set_orientacion_absoluta(), T_FLOAT, T_VECTOR, TMP_float, TMP_vector, VECTOR::x, VECTOR::y, y VECTOR::z. |
Here is the call graph for this function:
|
Reimplementado de COSA. Definición en la línea 976 del archivo cosa_rigida.C. References _velocidad_angular, COSA::anexar_fuerza(), VECTOR::imprimir(), VECTOR::norma(), VECTOR::normalizar(), posicion_absoluta(), VECTOR::producto_cruz(), MATRIZ_4x4::rotacion_punto_punto(), y COSA::velocidad_absoluta(). |
Here is the call graph for this function:
|
OJO: Esta funcion, por la manera en que usa variables globales, hace que el programa no sea "thread-safe"!
Reimplementado de COSA. Definición en la línea 100 del archivo cosa_rigida.C. References _centro_de_masa, _orientacion, COSA::consultar_variable(), MATRIZ_4x4::exportar_angulos_euler(), MATRIZ_4x4::importar_quaternion(), orientacion_absoluta(), T_FLOAT, T_QUATERNION, T_VECTOR, TMP_float, TMP_quaternion, TMP_vector, VECTOR::x, VECTOR::y, y VECTOR::z. |
Here is the call graph for this function:
|
OJO: Redefine la version de la clase COSA.
Reimplementado de COSA. Definición en la línea 236 del archivo cosa_rigida.C. References GEOMETRIA::crear_copia(), y Geometria. |
Here is the call graph for this function:
|
Implements COSA. Definición en la línea 90 del archivo cosa_rigida.C. References Geometria. |
|
Implements COSA. Definición en la línea 565 del archivo cosa_rigida.C. References _velocidad_angular, MATRIZ_4x4::exportar_angulos_euler(), Geometria, COSA::grabar_basico(), MATRIZ_4x4::importar_quaternion(), ENTIDAD::nombre(), VECTOR::norma(), orientacion_absoluta(), GEOMETRIA::pintar_aqz(), simplifique_real(), VECTOR::x, VECTOR::y, y VECTOR::z. |
Here is the call graph for this function:
|
Dado un Rayo, calcula el punto y la normal de la interseccion de dicho rayo con la geometria de dicha cosa. Se retorna la distancia desde el origen del rayo hasta el punto de interseccion. Si la distancia es menor a 0 (cero), no hay en realidad interseccion. OJO: Que tan ineficiente es esto? Tips...
Reimplementado de COSA. Reimplementado en ESPACIO_ABIERTO, y ESPACIO. Definición en la línea 812 del archivo cosa_rigida.C. References RAYO::direccion, Geometria, MATRIZ_4x4::importar_quaternion(), GEOMETRIA::interseccion(), MATRIZ_4x4::inversa(), VECTOR::normalizar(), orientacion_absoluta(), RAYO::origen, y posicion_absoluta(). |
Here is the call graph for this function:
|
Implements COSA. Definición en la línea 600 del archivo cosa_rigida.C. References COSA::_color, BOOLEAN, des_comille(), MATERIAL::difusa(), Geometria, COSA::leer_basico(), leer_geometria(), leer_rigida(), COSA::Material, resolver_tensor_de_inercia(), ENTIDAD::set_nombre(), TOKENIZADOR::siguiente_token(), TK_ABRIR, TK_CADENA, TK_CERRAR, TK_DESCONOCIDO, y TK_IDENTIFICADOR. |
Here is the call graph for this function:
|
Esto es un procedimiento de `leer`.
Definición en la línea 478 del archivo cosa_rigida.C. References _orientacion, _velocidad_angular, MATRIZ_4x4::exportar_quaternion(), QUATERNION::importar_angulo_eje(), VECTOR::normalizar(), MATRIZ_4x4::rotacion_angulos_euler(), TOKENIZADOR::siguiente_token(), TK_DESCONOCIDO, TK_NUMERO, TK_VECTOR_FIN, TK_VECTOR_INICIO, VECTOR::x, VECTOR::y, y VECTOR::z. Referenciado por leer(), y ESPACIO_ABIERTO::leer_espacio(). |
Here is the call graph for this function:
|
La operacion `minmax` de la clase GEOMETRIA calcula el paralelogramo envolvente de esta COSA en coordenadas relativas a la COSA. Esta, la operacion `minmax` de la COSA_RIGIDA calcula un min-max en coordenadas globales, utilizando las coordenadas de los 8 vertices extremos de la envolvente local. Implements COSA. Definición en la línea 771 del archivo cosa_rigida.C. References Geometria, GEOMETRIA::minmax(), posicion_absoluta(), VECTOR::x, VECTOR::y, y VECTOR::z. |
Here is the call graph for this function:
|
Implements COSA. Definición en la línea 1087 del archivo cosa_rigida.C. References COSA::_estoy_fijo, _orientacion, COSA::_posicion, COSA::_velocidad, _velocidad_angular, QUATERNION::direccion, QUATERNION::magnitud, QUATERNION::normalizar(), VECTOR::x, VECTOR::y, y VECTOR::z. |
Here is the call graph for this function:
|
ATENCION: ESTE ES EL METODO CENTRAL DE LA SIMULACION FISICA DE LAS COSAS! A continuacion, pocas lineas de codigo y muchas de comentarios intentando dejar en claro todo. Este metodo se realiza en varias etapas, las cuales por el momento abarcan lo siguiente: 1. Calcular la contribucion total de las fuerzas sobre el cuerpo 2. Actualizar la posicion y velocidad del cuerpo mediante la aplicacion de las ecuaciones de dinamica de cuerpos (no se usan las de cinematica) 3. Actualizar la orientacion y velocidad rotacional del cuerpo de manera similar al paso 2. A medida que AQUYNZA soporte la simulacion de mas comportamientos para las COSAs, este metodo ira creciendo!
Tenga en cuenta que como la actualizacion de la ecuacion diferencial que describe el movimiento de una COSA se realiza con un SOLVER mediante metodos numericos, esta funcion lo que calcula exactamente son los cambios que maneja el SOLVER (i.e. deriva la ecuacion diferencial).
OJO: Hay que mirar si el algoritmo se mejora si se realizan los siguientes cambios:
Implements COSA. Definición en la línea 1110 del archivo cosa_rigida.C. References COSA::_estoy_fijo, COSA::_masa, _orientacion, COSA::_posicion, COSA::_velocidad, _velocidad_angular, QUATERNION::direccion, MATRIZ_4x4::exportar_quaternion(), MATRIZ_4x4::importar_quaternion(), QUATERNION::importar_quaternion_puro(), MATRIZ_4x4::inversa(), COSA::limpiar_fuerzas(), COSA::lista_fuerzas_externas, QUATERNION::magnitud, VECTOR::producto_cruz(), LISTA< FUERZA_PUNTO * >::tam(), tensor_de_inercia_0, VECTOR::x, VECTOR::y, y VECTOR::z. |
Here is the call graph for this function:
|
OJO: Notese que las variables de estado de interes para el solver son: pocision, velocidad, orientacion y velocidad_rotacional y cada una son un vector de 3 posiciones, excepto la orientacion, que ademas es un quaternion y tiene magnitud.
Implements COSA. Definición en la línea 1054 del archivo cosa_rigida.C. References COSA::_estoy_fijo. |
|
Implements COSA. Definición en la línea 1067 del archivo cosa_rigida.C. References COSA::_estoy_fijo, _orientacion, COSA::_posicion, COSA::_velocidad, _velocidad_angular, QUATERNION::direccion, QUATERNION::magnitud, VECTOR::x, VECTOR::y, y VECTOR::z. |
|
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 de COSA. Definición en la línea 673 del archivo cosa_rigida.C. References _orientacion, QUATERNION::normalizar(), COSA::orientacion_absoluta(), y COSA::Padre. Referenciado por actualizar_variable(), ESPACIO_ABIERTO::anexar_objetos_rayables(), consultar_variable(), grabar(), ESPACIO_ABIERTO::interseccion(), interseccion(), ESPACIO_ABIERTO::pintar_gl(), pintar_gl(), y pintar_povray(). |
Here is the call graph for this function:
|
PRE: GL esta en GL_MODELVIEW.
Implements COSA. Reimplementado en ESPACIO_ABIERTO, y ESPACIO. Definición en la línea 864 del archivo cosa_rigida.C. References COSA::_color, MATRIZ_4x4::cargar_gl(), MATERIAL::difusa(), Geometria, MATRIZ_4x4::importar_quaternion(), COSA::Material, GEOMETRIA::minmax(), CAMARA::minmax_visible(), orientacion_absoluta(), GEOMETRIA::pintar_gl(), posicion_absoluta(), MATERIAL::set_difusa(), VECTOR::x, VECTOR::y, y VECTOR::z. |
Here is the call graph for this function:
|
Reimplementado de COSA. Definición en la línea 917 del archivo cosa_rigida.C. References COSA::_color, MATERIAL::activar_povray(), MATRIZ_4x4::activar_povray(), MATERIAL::difusa(), Geometria, MATRIZ_4x4::importar_quaternion(), MATRIZ_4x4::inversa(), COSA::Material, orientacion_absoluta(), GEOMETRIA::pintar_povray(), posicion_absoluta(), MATERIAL::set_difusa(), VECTOR::x, VECTOR::y, y VECTOR::z. |
Here is the call graph for this function:
|
Retorna las coordenadas absolutas de un punto que en el sistema local de coordenadas de esta COSA esta en la posicion `p`. OJO: Esto es respecto al centro geometrico de la COSA. Reimplementado de COSA. Definición en la línea 706 del archivo cosa_rigida.C. References _orientacion, COSA::_posicion, COSA::consultar_variable(), MATRIZ_4x4::importar_quaternion(), COSA::Padre, T_QUATERNION, y T_VECTOR. Referenciado por ESPACIO_ABIERTO::anexar_objetos_rayables(), aplicar_drag(), ESPACIO_ABIERTO::interseccion(), interseccion(), minmax(), ESPACIO_ABIERTO::pintar_gl(), pintar_gl(), y pintar_povray(). |
Here is the call graph for this function:
|
Reimplementado de COSA. Definición en la línea 462 del archivo cosa_rigida.C. References COSA::_nombre_padre, ENTIDAD::nombre(), COSA::Padre, y LISTA< T >::tam(). |
Here is the call graph for this function:
|
Esto es un procedimiento de `leer`.
Definición en la línea 541 del archivo cosa_rigida.C. References COSA::_masa, MATRIZ_4x4::identidad(), MATRIZ_4x4::M, y tensor_de_inercia_0. Referenciado por leer(), y ESPACIO_ABIERTO::leer_espacio(). |
Here is the call graph for this function:
|
OJO: ESTO NO ESTA FUNCIONANDO CUANDO ESTA COSA TIENE PADRE!
Definición en la línea 691 del archivo cosa_rigida.C. References _orientacion, y COSA::Padre. Referenciado por actualizar_variable(). |
|
Reimplementado de COSA. Definición en la línea 751 del archivo cosa_rigida.C. References _velocidad_angular. |
|
Reimplementado de COSA. Definición en la línea 760 del archivo cosa_rigida.C. References _orientacion, MATRIZ_4x4::importar_quaternion(), y tensor_de_inercia_0. |
Here is the call graph for this function:
|
Definición en la línea 657 del archivo cosa_rigida.C. References COSA::_posicion, VECTOR::x, VECTOR::y, y VECTOR::z. |
|
Reimplementado de COSA. Definición en la línea 742 del archivo cosa_rigida.C. References _velocidad_angular. |
|
Definición en la línea 320 del archivo cosa.h. Referenciado por consultar_variable(), y COSA_RIGIDA(). |
|
Definición en la línea 322 del archivo cosa.h. Referenciado por actualizar_variable(), consultar_variable(), COSA_RIGIDA(), leer_rigida(), ODE_actualizar_variables_de_estado(), ODE_calcular_la_primera_derivada(), ODE_reportar_variables_de_estado(), orientacion_absoluta(), posicion_absoluta(), set_orientacion_absoluta(), y tensor_de_inercia(). |
|
Definición en la línea 330 del archivo cosa.h. Referenciado por actualizar(), y COSA_RIGIDA(). |
|
Definición en la línea 321 del archivo cosa.h. Referenciado por actualizar(), aplicar_drag(), COSA_RIGIDA(), grabar(), leer_rigida(), ODE_actualizar_variables_de_estado(), ODE_calcular_la_primera_derivada(), ODE_reportar_variables_de_estado(), set_velocidad_angular_absoluta(), y velocidad_angular_absoluta(). |
|
Definición en la línea 329 del archivo cosa.h. Referenciado por COSA_RIGIDA(), crear_copia(), geometria(), grabar(), interseccion(), leer(), minmax(), pintar_gl(), y pintar_povray(). |
|
Definición en la línea 323 del archivo cosa.h. Referenciado por COSA_RIGIDA(), ODE_calcular_la_primera_derivada(), resolver_tensor_de_inercia(), y tensor_de_inercia(). |