Ir al código fuente de este archivo.
Funciones | |
void | detector_colision_puntual_rigida (COSA *A, COSA *B, LISTA< CONTACTO * > *Colisiones, double udt, BOOLEAN visual_debug, MINMAX *m1, MINMAX *m2) |
Este metodo utiliza un procedimiento especial que toma ventaja de la operacion generica de interseccion rayo/cosa, para implementar un esquema generico de deteccion de colisiones entre una MASA_PUNTUAL y cualquier otra cosa que implemente la interseccion. | |
void | detector_colision_tela_rigida (COSA *A, COSA *B, LISTA< CONTACTO * > *Colisiones, double udt, BOOLEAN visual_debug, MINMAX *m1, MINMAX *m2) |
Este metodo generaliza el caso de `detector_colision_puntual_rigida` para controlar colisiones entre una tela y cualquier otra cosa que implemente la operacion de interseccion. | |
void | detectar_par_colision (COSA *A, COSA *B, LISTA< CONTACTO * > *Colisiones, double udt, BOOLEAN visual_debug) |
Este metodo recibe dos cosas y revisa si se colisionan o no. | |
Variables | |
int | COLOR_pareja = 0 |
LISTA< CONTACTO * > | contactos |
LISTA< MINMAX * > | TMP_debug_visual |
BOOLEAN | visual_debug = TRUE |
|
Este metodo recibe dos cosas y revisa si se colisionan o no. Si las cosas no colisionan no se hace nada, y si colisionan se crea y anexa a la lista `Colisiones` una estructura de informacion que contiene el punto de contacto de las dos cosas, y referencias a las cosas involucradas. Notese que como dos cosas pueden colisionar en varios puntos, se pueden anexar varios CONTACTOs a la lista de una sola vez. `udt` indica el intervalo de tiempo de la simulacion que transcurrio antes de llegar al estado actual de las cosas y se utiliza para estimar la posicion anterior de las cosas en colision (en interpenetracion). Esta estimacion es un parametro usado en la deteccion del punto de colision. Para entenderlo mejor estudie el caso de colision entre una masa puntual y una cosa rigida. El metodo hace dos niveles de chequeo para probar si dos cosas se colisionan:
Definición en la línea 196 del archivo colision.C. References CC_COSA_RIGIDA, CC_MASA_PUNTUAL, CC_TELA, COLOR_pareja, detector_colision_puntual_rigida(), detector_colision_tela_rigida(), COSA::estoy_fijo(), MINMAX::max, MINMAX::min, COSA::minmax(), TMP_debug_visual, visual_debug, VECTOR::x, VECTOR::y, y VECTOR::z. Referenciado por MANEJADOR_CONFLICTOS_COLISION::detectar_conflictos(). |
Here is the call graph for this function:
|
Este metodo utiliza un procedimiento especial que toma ventaja de la operacion generica de interseccion rayo/cosa, para implementar un esquema generico de deteccion de colisiones entre una MASA_PUNTUAL y cualquier otra cosa que implemente la interseccion. Notese como se estima la posicion de la masa puntual a partir de su actual vector de velocidad y el ultimo intervalo de tiempo `udt`. Este metodo funciona mejor cuando la velocidad de la cosa `B` es relativamente menor que la de la masa puntual `a`. Debe tenerse en cuenta que para evitar "atravesamientos" el intervalo de incremento de la simulacion debe ser muy chico, comparado con las velocidades maximas de las cosas. PRE: A es una MASA_PUNTUAL y B es una COSA_RIGIDA. OJO: ESTA ESTRATEGIA NO FUNCIONA CUANDO `A` ESTA QUIETA! ESTO DEBE CAMBIARSE! Definición en la línea 102 del archivo colision.C. References CONTACTO::A, LISTA< T >::anx(), CONTACTO::B, RAYO::direccion, COSA::interseccion(), CONTACTO::n_a, CONTACTO::n_b, VECTOR::normalizar(), RAYO::origen, CONTACTO::p, COSA::posicion_absoluta(), MINMAX::Rayito, COSA::set_posicion_absoluta(), CONTACTO::t, COSA::velocidad_absoluta(), y visual_debug. Referenciado por detectar_par_colision(), y detector_colision_tela_rigida(). |
Here is the call graph for this function:
|
Este metodo generaliza el caso de `detector_colision_puntual_rigida` para controlar colisiones entre una tela y cualquier otra cosa que implemente la operacion de interseccion. PRE: `A` debe ser una TELA y `B` una COSA_RIGIDA. Definición en la línea 173 del archivo colision.C. References detector_colision_puntual_rigida(), TELA::masa_puntual(), TELA::num_masas(), y visual_debug. Referenciado por detectar_par_colision(). |
Here is the call graph for this function:
|
Definición en la línea 30 del archivo colision.C. Referenciado por MANEJADOR_CONFLICTOS_COLISION::detectar_conflictos(), detectar_par_colision(), y MINMAX::MINMAX(). |
|
Definición en la línea 31 del archivo colision.C. Referenciado por MANEJADOR_CONFLICTOS_COLISION::detectar_conflictos(), y MANEJADOR_CONFLICTOS_COLISION::resolver_conflictos(). |
|
Definición en la línea 33 del archivo colision.C. Referenciado por MANEJADOR_CONFLICTOS_COLISION::detectar_conflictos(), y detectar_par_colision(). |
|
Definición en la línea 34 del archivo colision.C. Referenciado por MANEJADOR_CONFLICTOS_COLISION::detectar_conflictos(), detectar_par_colision(), detector_colision_puntual_rigida(), y detector_colision_tela_rigida(). |