#include <colision.h>
Diagrama de herencias de MANEJADOR_CONFLICTOS_COLISION
Métodos públicos | |
MANEJADOR_CONFLICTOS_COLISION () | |
virtual | ~MANEJADOR_CONFLICTOS_COLISION () |
void | detectar_conflictos (LISTA< COSA * > *Cosas, double udt) |
DETECTAR COLISIONES... | |
void | resolver_conflictos (void) |
RESPUESTA A COLISIONES. |
|
Definición en la línea 290 del archivo colision.C. |
|
Definición en la línea 295 del archivo colision.C. |
|
DETECTAR COLISIONES... Este metodo resuelve el problema geometrico de deteccion de colisiones entre las COSAs de la lista `Cosas`. Crea y retorna una lista de contactos puntuales que ocurren siempre entre pares de COSAs. `udt` solo se usa para pasarselo al metodo `detectar_par_colision`. El metodo realiza su trabajo de la siguiente manera:
OJO: Para mejorar el chequeo por volumenes envolventes, debe aislarse la primera etapa de `detectar_par_colision`, e implementarse el algoritmo de busqueda/barrido que aprovecha la coherencia espacial de las COSAs dentro de este metodo. Dicho algoritmo preprocesara una lista de parejas sospechosas de colisionarse, y descarta las que no se colisionan. ATENCION!: En este momento, se utilizan versiones "inocentes" de las dos etapas. Se propone sofisticar cada una de las etapas con los algoritmos descritos por Baraff en las notas del curso de SIGGRAPH "Physically based modelling: principles and practice". Tambien debe tenerse en cuenta que la etapa 2 se encuentra en un estado muy precario de iniciacion. Implements MANEJADOR_CONFLICTOS. Definición en la línea 303 del archivo colision.C. References COLOR_pareja, contactos, detectar_par_colision(), LISTA< T >::tam(), TMP_debug_visual, y visual_debug. |
Here is the call graph for this function:
|
RESPUESTA A COLISIONES. Este metodo recibe una lista de contactos calculada previamente en la fase de deteccion de colisiones. Para cada conflicto, determina si hay contacto o colision y segun sea el caso actualiza las velocidades de las cosas involucradas mediante la heuristica de colisiones elasticas o inelasticas (basado en los coeficientes de restitucion). Notese que se considera tanto las velocidades lineales como las velocidades angulares de las cosas en colision. Este metodo es responsable de actualizar dichas velocidades de una manera fisicamente correcta, es decir, cambiarlas sin violar los principios de conservacion del momentum y de la energia. Para lograrlo, se calcula el impulso (J/torque_impulsivo , con unidades de momentum) necesario para evitar la interpenetracion de los cuerpos, y se actualizan las velocidades usando el momentum calculado. Para entender los detalles de las matematicas usadas, se recomienda referirse al capitulo 8 del curso "physically based modelling", de Baraff, publicado en SIGGRAPH. Implements MANEJADOR_CONFLICTOS. Definición en la línea 356 del archivo colision.C. References CONTACTO::A, CONTACTO::B, contactos, COSA::estoy_fijo(), MATRIZ_4x4::inversa(), COSA::ke(), COSA::masa(), CONTACTO::n_b, VECTOR::normalizar(), CONTACTO::p, COSA::posicion_absoluta(), VECTOR::producto_cruz(), VECTOR::producto_punto(), COSA::set_velocidad_absoluta(), COSA::set_velocidad_angular_absoluta(), COSA::tensor_de_inercia(), COSA::velocidad_absoluta(), y COSA::velocidad_angular_absoluta(). |
Here is the call graph for this function: