La detección de colisiones es el problema computacional de detectar la intersección de dos o más objetos en el espacio virtual. Más precisamente, aborda las preguntas de si , cuándo y dónde se intersecan dos o más objetos. La detección de colisiones es un problema clásico de la geometría computacional con aplicaciones en gráficos por computadora , simulación física , videojuegos , robótica (incluida la conducción autónoma ) y física computacional . Los algoritmos de detección de colisiones se pueden dividir en algoritmos que operan sobre objetos espaciales 2D o 3D. [ 1 ]
Descripción general

La detección de colisiones está estrechamente ligada al cálculo de la distancia entre objetos, ya que estos colisionan cuando la distancia entre ellos es menor o igual a cero. [ 2 ] Las distancias negativas indican que un objeto ha penetrado a otro. Para realizar la detección de colisiones se requiere más información que la simple distancia entre los objetos.
Identificar con precisión los puntos de contacto en las superficies de ambos objetos es fundamental para calcular una respuesta de colisión físicamente precisa. La complejidad de esta tarea aumenta con el nivel de detalle en las representaciones de los objetos: cuanto más intrincado sea el modelo, mayor será el coste computacional. [ 3 ]
La detección de colisiones frecuentemente involucra objetos dinámicos, lo que agrega una dimensión temporal a los cálculos de distancia. En lugar de simplemente medir la distancia entre objetos estáticos, los algoritmos de detección de colisiones a menudo buscan determinar si el movimiento de los objetos los llevará a un punto en el tiempo donde su distancia sea cero, una operación que agrega una sobrecarga computacional significativa. [ 4 ] [ 3 ]
En la detección de colisiones que involucran múltiples objetos, un enfoque ingenuo requeriría detectar colisiones para todas las combinaciones de pares de objetos. A medida que aumenta el número de objetos, el número de comparaciones requeridas crece rápidamente: paraobjetos,Se necesitan pruebas de intersección con un enfoque ingenuo. Este crecimiento cuadrático hace que dicho enfoque sea computacionalmente costoso comoaumenta. [ 4 ] [ 5 ]
Debido a la complejidad mencionada, la detección de colisiones es un proceso computacionalmente intensivo. Sin embargo, es esencial para aplicaciones interactivas como videojuegos, robótica y motores de física en tiempo real. Para gestionar estas exigencias computacionales, se han realizado grandes esfuerzos para optimizar los algoritmos de detección de colisiones.
Un enfoque comúnmente utilizado para acelerar los cálculos necesarios es dividir el proceso en dos fases: la fase amplia y la fase estrecha . [ 4 ] [ 6 ] La fase amplia tiene como objetivo responder a la pregunta de si los objetos podrían colisionar, utilizando un enfoque conservador pero eficiente para descartar pares que claramente no se intersecan, evitando así cálculos innecesarios.
Los objetos que no pueden separarse de forma definitiva en la fase amplia se pasan a la fase estrecha. En esta fase, algoritmos más precisos determinan si estos objetos se intersecan. En caso afirmativo, la fase estrecha suele calcular el momento y la ubicación exactos de la intersección.
Fase amplia
Esta fase tiene como objetivo encontrar rápidamente objetos o partes de objetos para los cuales se puede determinar rápidamente que no se necesita ninguna prueba de colisión adicional. Una propiedad útil de este enfoque es que es sensible a la salida . En el contexto de la detección de colisiones, esto significa que la complejidad temporal de la detección de colisiones es proporcional al número de objetos que están cerca unos de otros. Un ejemplo temprano de esto es I-COLLIDE [ 5 ] donde el número de pruebas de colisión de fase estrecha requeridas fuedóndees el número de objetos yes el número de objetos muy próximos entre sí. Esto supone una mejora significativa con respecto a la complejidad cuadrática del enfoque ingenuo.
Particionamiento espacial
Bajo el término "particionamiento espacial" se pueden agrupar varios enfoques , entre los que se incluyen octrees (para 3D), quadtrees (para 2D), particionamiento espacial binario (o árboles BSP) y otros enfoques similares. Si se divide el espacio en varias celdas simples y se puede demostrar que dos objetos no se encuentran en la misma celda, no es necesario comprobar su intersección. Las escenas dinámicas y los objetos deformables requieren actualizar el particionamiento, lo que puede generar una sobrecarga.
Jerarquía de volúmenes delimitadores
La jerarquía de volúmenes delimitadores (BVH) es una estructura de árbol sobre un conjunto de volúmenes delimitadores . La colisión se determina mediante un recorrido del árbol que comienza desde la raíz. Si el volumen delimitador de la raíz no interseca con el objeto de interés, el recorrido se puede detener. Sin embargo, si hay una intersección, el recorrido continúa y verifica las ramas para cada una de ellas. Las ramas que no tienen intersección con el volumen delimitador se pueden descartar de la prueba de intersección posterior. Por lo tanto, se puede determinar que varios objetos no intersecan a la vez. BVH se puede usar con objetos deformables como tela o cuerpos blandos, pero la jerarquía de volúmenes debe ajustarse a medida que la forma se deforma. Para objetos deformables, debemos considerar las autocolisiones o autointersecciones. BVH también se puede usar para este fin. La colisión entre dos objetos se calcula calculando la intersección entre los volúmenes delimitadores de la raíz del árbol; a medida que hay colisión, exploramos los subárboles que se intersecan. Las colisiones exactas entre los objetos reales, o sus partes (a menudo triángulos de una malla triangular ), deben calcularse solo entre hojas que se intersecan. [ 7 ] El mismo enfoque funciona para colisiones por pares y autocolisiones.
Aprovechar la coherencia temporal
Durante la fase general, cuando los objetos del mundo se mueven o se deforman, es necesario actualizar las estructuras de datos utilizadas para descartar colisiones. En los casos en que los cambios entre dos fotogramas o pasos de tiempo son pequeños y los objetos se pueden aproximar bien con cuadros delimitadores alineados con los ejes , el algoritmo de barrido y poda [ 5 ] puede ser un enfoque adecuado.
Varias observaciones clave hacen que la implementación sea eficiente: Dos cuadros delimitadores se intersecan si, y solo si , hay superposición a lo largo de los tres ejes; la superposición se puede determinar, para cada eje por separado, ordenando los intervalos de todos los cuadros; y, por último, las actualizaciones entre dos fotogramas suelen ser pequeñas (lo que hace que los algoritmos de ordenación optimizados para listas casi ordenadas sean adecuados para esta aplicación). El algoritmo realiza un seguimiento de los cuadros que se intersecan actualmente, y a medida que los objetos se mueven, la reordenación de los intervalos ayuda a mantener el seguimiento del estado. [ 8 ]
Poda por pares
Una vez que se ha seleccionado un par de cuerpos físicos para una investigación más profunda, es necesario comprobar las colisiones con mayor cuidado. Sin embargo, en muchas aplicaciones, los objetos individuales (si no son demasiado deformables) se describen mediante un conjunto de primitivas más pequeñas, principalmente triángulos. Por lo tanto, hay dos conjuntos de triángulos,y(Para simplificar, cada conjunto tiene el mismo número de triángulos).
Lo obvio es revisar todos los triángulos.contra todos los triángulospara colisiones, pero esto implicacomparaciones, lo cual es muy ineficiente. Si es posible, es conveniente utilizar un algoritmo de poda para reducir el número de pares de triángulos que deben comprobarse.
La familia de algoritmos más utilizada se conoce como el método de volúmenes delimitadores jerárquicos . Como paso de preprocesamiento, para cada objeto (por ejemplo,y) calcula una jerarquía de volúmenes delimitadores . Luego, en cada paso de tiempo, cuando se necesitan comprobar las colisiones entreyLos volúmenes delimitadores jerárquicos se utilizan para reducir el número de pares de triángulos considerados. Para simplificar, se proporciona un ejemplo con esferas delimitadoras, aunque se ha señalado que las esferas no son deseables en muchos casos.
Sies un conjunto de triángulos, se precalcula una esfera delimitadora.Hay muchas maneras de elegir, es una esfera que contiene completamentey es lo más pequeño posible.
Con antelación,yse puede calcular. Claramente, si estas dos esferas no se intersecan (y eso es muy fácil de comprobar), entonces tampocoySin embargo , esto no es mucho mejor que un algoritmo de poda de n cuerpos.
Sies un conjunto de triángulos, luego divídelo en dos mitadesy. Aplique esto ayy calcular (con antelación) las esferas delimitadorasyLa esperanza aquí es que estas esferas delimitadoras sean mucho más pequeñas quey. Y, si, por ejemplo,yno se intersecan, entonces no tiene sentido comprobar ningún triángulo encontra cualquier triángulo en.
Como preprocesamiento , tome cada cuerpo físico (representado por un conjunto de triángulos) y descompóngalo recursivamente en un árbol binario , donde cada nodorepresenta un conjunto de triángulos, y sus dos hijos representanyEn cada nodo del árbol, precalcule la esfera delimitadora..
Cuando llega el momento de probar si un par de objetos colisionan, su árbol de esferas delimitadoras puede utilizarse para eliminar muchos pares de triángulos.
Muchas variantes de los algoritmos se obtienen eligiendo algo distinto a una esfera paraSi se eligen cuadros delimitadores alineados con los ejes , se obtienen árboles AABBTrees. Los árboles de cuadros delimitadores orientados se denominan árboles OBBTrees. Algunos árboles son más fáciles de actualizar si el objeto subyacente cambia. Algunos árboles pueden admitir primitivas de orden superior, como splines, en lugar de triángulos simples.
Fase estrecha
Los objetos que no pueden separarse definitivamente en la fase amplia pasan a la fase estrecha. En esta fase, los objetos considerados están relativamente cerca entre sí. Aun así, primero se intenta determinar rápidamente si se necesita una intersección completa. Este paso a veces se denomina fase intermedia. [ 4 ] Una vez superadas estas pruebas (por ejemplo, si el par de objetos colisiona), algoritmos más precisos determinan si estos objetos se intersecan realmente. Si lo hacen, la fase estrecha suele calcular el momento y la ubicación exactos de la intersección.
Volúmenes delimitadores
Dado que comprobar si dos objetos se intersecan puede ser una operación relativamente costosa, una forma rápida de evitar potencialmente el cálculo es comprobar si los volúmenes delimitadores que encierran los dos objetos se intersecan. Los volúmenes delimitadores se utilizan normalmente en la etapa inicial (de poda) de la detección de colisiones, de modo que solo los objetos con volúmenes superpuestos necesitan compararse en detalle. [ 9 ] Si no se superponen, no hay necesidad de comprobar los objetos reales. Calcular la superposición o la colisión entre volúmenes delimitadores implica cálculos adicionales, por lo que para que la prueba del volumen delimitador aporte valor: a) el coste de intersecar el volumen delimitador debe ser bajo y b) el volumen delimitador debe ser lo suficientemente ajustado como para que el número de intersecciones "falsas positivas" sea bajo. Una intersección falsa positiva en este caso significa que los volúmenes delimitadores se intersecan, pero los objetos reales no. Los diferentes tipos de volúmenes delimitadores ofrecen diferentes ventajas y desventajas para estas propiedades.
Las cajas delimitadoras alineadas con los ejes (AABB) y los cuboides son populares debido a su simplicidad y a las rápidas pruebas de intersección. [ 10 ] Los volúmenes delimitadores, como las cajas delimitadoras orientadas (OBB) , los K-DOP y las envolturas convexas, ofrecen una aproximación más precisa de la forma encerrada a costa de una prueba de intersección más elaborada.
Detección exacta de colisiones por pares
Los objetos para los que los métodos de poda no pudieron descartar la posibilidad de una colisión deben someterse a un cálculo exacto de detección de colisiones.
Detección de colisiones entre objetos convexos
Según el teorema de los planos separadores , para dos objetos convexos disjuntos , existe un plano tal que un objeto se encuentra completamente a un lado de dicho plano, y el otro objeto se encuentra al lado opuesto. Esta propiedad permite el desarrollo de algoritmos eficientes de detección de colisiones entre objetos convexos. Existen varios algoritmos para encontrar los puntos más cercanos en la superficie de dos objetos poliédricos convexos y determinar la colisión. Dos ejemplos de estos algoritmos son el trabajo inicial de Ming C. Lin [ 11 ] , que utilizó una variación del algoritmo simplex de la programación lineal , y el algoritmo de distancia de Gilbert-Johnson-Keerthi [ 12 ] . Estos algoritmos se aproximan al tiempo constante cuando se aplican repetidamente a pares de objetos estacionarios o de movimiento lento, y cada paso se inicializa a partir de la comprobación de colisión anterior. [ 11 ]
El resultado de todo este trabajo algorítmico es que la detección de colisiones se puede realizar de manera eficiente para miles de objetos en movimiento en tiempo real en ordenadores personales y consolas de videojuegos convencionales.
Poda a priori
Cuando la mayoría de los objetos involucrados son fijos, como suele ocurrir en los videojuegos, se pueden utilizar métodos a priori que emplean precomputación para acelerar la ejecución.
En este caso, también es deseable realizar una poda, tanto la poda de n cuerpos como la poda por pares, pero los algoritmos deben tener en cuenta el tiempo y los tipos de movimientos utilizados en el sistema físico subyacente .
En lo que respecta a la detección exacta de colisiones por pares, esta depende en gran medida de la trayectoria, y prácticamente es necesario utilizar un algoritmo numérico de búsqueda de raíces para calcular el instante del impacto.
Como ejemplo, consideremos dos triángulos que se mueven en el tiempo.yEn cualquier momento, se puede comprobar la intersección de los dos triángulos utilizando los veinte planos mencionados anteriormente. Si¿El avión está pasando por puntos?enEntonces hay veinte avionespara rastrear. Cada plano necesita ser rastreado contra tres vértices, esto da sesenta valores para rastrear. Usando un buscador de raíces en estas sesenta funciones produce los tiempos de colisión exactos para los dos triángulos dados y las dos trayectorias dadas. Si se supone que las trayectorias de los vértices son polinomios lineales enEntonces, las últimas sesenta funciones son, de hecho, polinomios cúbicos, y en este caso excepcional, es posible determinar el tiempo exacto de colisión utilizando la fórmula para las raíces cúbicas. Algunos analistas numéricos sugieren que usar la fórmula para las raíces cúbicas no es tan numéricamente estable como usar un buscador de raíces para polinomios.
Segmentos del centroide del triángulo
Un objeto de malla triangular se usa comúnmente en el modelado de cuerpos 3D. Normalmente, la función de colisión es una intersección de triángulo a triángulo o una forma delimitadora asociada a la malla. El centroide de un triángulo es la ubicación de su centro de masa, de modo que se equilibraría sobre la punta de un lápiz. La simulación solo necesita agregar la dimensión del centroide a los parámetros físicos. Conociendo los puntos del centroide tanto del objeto como del objetivo, es posible definir el segmento de línea que conecta estos dos puntos.
El vector de posición del centroide de un triángulo es el promedio de los vectores de posición de sus vértices. Por lo tanto, si sus vértices tienen coordenadas cartesianas,yentonces el centroide es.
Aquí está la función para calcular la distancia entre segmentos de línea entre dos puntos 3D.
Aquí, la longitud/distancia del segmento es un criterio de detección ajustable. A medida que los objetos se aproximan, la longitud disminuye hasta el valor umbral. Una esfera triangular se convierte en la prueba geométrica efectiva. Una esfera centrada en el centroide puede dimensionarse para abarcar todos los vértices del triángulo.
Uso
Detección de colisiones en simulación por ordenador
Los simuladores físicos difieren en la forma en que reaccionan ante una colisión. Algunos utilizan la suavidad del material para calcular una fuerza, lo que permite resolver la colisión en los siguientes pasos de tiempo como si fuera en la realidad. Esto consume muchos recursos de la CPU para materiales de baja suavidad. Otros simuladores estiman el tiempo de colisión mediante interpolación lineal , revierten la simulación y calculan la colisión mediante los métodos más abstractos de las leyes de conservación .
Algunos métodos iteran la interpolación lineal ( método de Newton ) para calcular el tiempo de colisión con una precisión mucho mayor que el resto de la simulación. La detección de colisiones utiliza la coherencia temporal para permitir pasos de tiempo aún más finos sin aumentar demasiado la demanda de CPU, como en el control del tráfico aéreo .
Tras una colisión inelástica , pueden producirse estados especiales de deslizamiento y reposo. Por ejemplo, el motor Open Dynamics Engine utiliza restricciones para simularlos. Las restricciones evitan la inercia y, por lo tanto, la inestabilidad. La implementación del reposo mediante un grafo de escena evita la deriva.
En otras palabras, los simuladores físicos suelen funcionar de dos maneras: detectando la colisión a posteriori (después de que ocurra) o a priori (antes de que ocurra). Además de la distinción entre a posteriori y a priori , casi todos los algoritmos modernos de detección de colisiones se dividen en una jerarquía de algoritmos. A menudo se utilizan los términos "discreto" y "continuo" en lugar de a posteriori y a priori .
A posteriori (discreto) versus a priori (continuo)
En el caso a posteriori , la simulación física avanza un pequeño paso y luego se comprueba si algún objeto se interseca o si se observa que se interseca. En cada paso de la simulación, se crea una lista de todos los cuerpos que se intersecan y se fijan sus posiciones y trayectorias para tener en cuenta la colisión. Este método se denomina a posteriori porque, por lo general, no detecta el instante exacto de la colisión y solo la registra después de que esta haya ocurrido.
En los métodos a priori , existe un algoritmo de detección de colisiones capaz de predecir con gran precisión las trayectorias de los cuerpos físicos. Los instantes de colisión se calculan con alta precisión, y los cuerpos físicos nunca llegan a interpenetrarse. Se denomina a priori porque el algoritmo de detección de colisiones calcula los instantes de colisión antes de actualizar la configuración de los cuerpos físicos.
Las principales ventajas de los métodos a posteriori son las siguientes: En este caso, el algoritmo de detección de colisiones no necesita conocer la multitud de variables físicas; se le proporciona una lista simple de cuerpos físicos y el programa devuelve una lista de cuerpos que se intersecan. El algoritmo de detección de colisiones no necesita comprender la fricción, las colisiones elásticas o, peor aún, las colisiones no elásticas y los cuerpos deformables. Además, los algoritmos a posteriori son, en efecto, una dimensión más simples que los algoritmos a priori . Un algoritmo a priori debe considerar la variable tiempo, que está ausente en el problema a posteriori .
Por otro lado, los algoritmos a posteriori causan problemas en la etapa de "corrección", donde es necesario corregir las intersecciones (que no son físicamente correctas). Además, si el paso discreto es demasiado grande, la colisión podría pasar desapercibida, lo que resultaría en que un objeto atraviese a otro si es lo suficientemente rápido o pequeño.
Las ventajas de los algoritmos a priori radican en una mayor fidelidad y estabilidad. Es difícil (aunque no del todo imposible) separar la simulación física del algoritmo de detección de colisiones. Sin embargo, salvo en los casos más sencillos, el problema de determinar de antemano cuándo colisionarán dos cuerpos (dados algunos datos iniciales) no tiene una solución analítica; por lo general, se requiere un algoritmo numérico para encontrar raíces .
Algunos objetos están en contacto estático , es decir, en colisión, pero sin rebotar ni interpenetrar, como un jarrón sobre una mesa. En todos los casos, el contacto estático requiere un tratamiento especial: si dos objetos colisionan ( a posteriori ) o se deslizan ( a priori ) y su movimiento relativo está por debajo de un umbral, la fricción se convierte en adherencia y ambos objetos se ubican en la misma rama del grafo de escena .
Juegos de vídeo
Los videojuegos deben distribuir su limitado tiempo de procesamiento entre varias tareas. A pesar de esta limitación de recursos y del uso de algoritmos de detección de colisiones relativamente primitivos, los programadores han logrado crear sistemas creíbles, aunque inexactos, para su uso en videojuegos.
Durante mucho tiempo, los videojuegos tenían un número muy limitado de objetos que procesar, por lo que comprobar todos los pares no era un problema. En los juegos bidimensionales, en algunos casos, el hardware podía detectar y reportar eficientemente los píxeles superpuestos entre los sprites en la pantalla. [ 13 ] En otros casos, simplemente dividir la pantalla en mosaicos y vincular cada sprite a los mosaicos con los que se superpone proporciona una poda suficiente, y para las comprobaciones por pares, se utilizan rectángulos o círculos delimitadores llamados hitboxes , que se consideran suficientemente precisos.
Los juegos tridimensionales han utilizado métodos de partición espacial para-poda corporal, y durante mucho tiempo se utilizó una o varias esferas por objeto 3D real para comprobaciones por pares. Las comprobaciones exactas son muy raras, excepto en juegos que intentan simular la realidad con precisión. Incluso en esos casos, las comprobaciones exactas no se utilizan necesariamente en todos.
Dado que los videojuegos no necesitan imitar la física real, la estabilidad no suele ser un problema. Casi todos los juegos utilizan detección de colisiones a posteriori , y estas se resuelven mediante reglas muy sencillas. Por ejemplo, si un personaje queda incrustado en una pared, simplemente se le puede devolver a su última posición segura. Algunos juegos calculan la distancia máxima que el personaje puede recorrer antes de quedar incrustado en una pared y solo le permiten moverse hasta esa distancia.
En muchos videojuegos, aproximar la posición de los personajes mediante un punto es suficiente para detectar colisiones con el entorno. En este caso, los árboles de partición binaria del espacio proporcionan un algoritmo viable, eficiente y sencillo para comprobar si un punto está integrado en el escenario. Esta estructura de datos también puede utilizarse para gestionar adecuadamente la situación de "posición de reposo" cuando un personaje corre por el suelo. Las colisiones entre personajes y las colisiones con proyectiles y obstáculos se tratan por separado.
Un simulador robusto es aquel que reacciona a cualquier entrada de forma razonable. Por ejemplo, en un videojuego de carreras de coches de alta velocidad , es concebible que los coches avancen una distancia considerable por la pista entre un paso de simulación y el siguiente. Si hay un obstáculo poco profundo en la pista (como un muro de ladrillos), es muy probable que el coche lo salte por completo, lo cual es muy indeseable. En otros casos, la corrección que requieren los algoritmos a posteriori no se implementa correctamente, lo que provoca errores que pueden atrapar a los personajes en las paredes o permitirles atravesarlas y caer en un abismo sin fondo donde puede haber o no un pozo mortal , a veces denominado "infierno negro", "infierno azul" o "infierno verde", según el color predominante. Estas son las características de un sistema de detección de colisiones y simulación física defectuoso. Big Rigs: Over the Road Racing es un ejemplo tristemente célebre de un juego con un sistema de detección de colisiones defectuoso o posiblemente inexistente.
Hitbox

Una hitbox es una forma invisible que se usa comúnmente en videojuegos para la detección de colisiones en tiempo real; es un tipo de caja delimitadora. Suele ser un rectángulo (en juegos 2D) o un cuboide (en 3D) que se adjunta a un punto de un objeto visible (como un modelo o un sprite) y lo sigue. Las formas circulares o esferoidales también son comunes, aunque se las suele llamar "cajas". Es habitual que los objetos animados tengan hitboxes adjuntas a cada parte móvil para garantizar la precisión durante el movimiento. [ 14 ]
Las cajas de colisión se utilizan para detectar colisiones unidireccionales, como cuando un personaje recibe un puñetazo o un disparo. No son adecuadas para detectar colisiones con retroalimentación (por ejemplo, chocar contra una pared) debido a la dificultad que experimentan tanto los humanos como la IA para gestionar la ubicación cambiante de una caja de colisión; este tipo de colisiones se suelen gestionar con cajas delimitadoras alineadas con los ejes, mucho más sencillas . Los jugadores pueden usar el término "caja de colisión" para referirse a este tipo de interacciones.
Una hitbox es una zona de impacto que se utiliza para detectar las fuentes de daño entrantes. En este contexto, el término hitbox se suele reservar para aquellas que infligen daño. Por ejemplo, un ataque solo puede impactar si la hitbox que rodea el puñetazo del atacante conecta con una de las hitboxes del oponente en su cuerpo, mientras que la colisión de hitboxes opuestas puede resultar en que los jugadores intercambien o cancelen golpes, y las hitboxes opuestas no interactúan entre sí. El término no está estandarizado en la industria; algunos juegos invierten sus definiciones de hitbox y hurtbox , mientras que otros solo usan "hitbox" para ambos lados.

Véase también
Referencias
- ↑ Teschner, M.; Kimmerle, S.; Heidelberger, B.; Zachmann, G.; Raghupathi, L.; Fuhrmann, A.; Cani, M.-P.; Faure, F.; Magnenat-Thalmann, N.; Strasser, W.; Volino, P. (2005). "Detección de colisiones para objetos deformables" . Computer Graphics Forum . 24 : 61–81 . CiteSeerX 10.1.1.58.2505 . doi : 10.1111/j.1467-8659.2005.00829.x . S2CID 1359430 .
- ↑ Goodman, Jacob E.; O'Rourke, Joseph; Tóth, Csaba D., eds. (2018). "39". Manual de geometría discreta y computacional . Matemáticas discretas y sus aplicaciones (3.ª ed.). Boca Raton, Londres, Nueva York: CRC Press, Taylor & Francis Group, un libro de Chapman & Hall. ISBN 978-1-4987-1139-5.
- 1 2 Andrews, Sheldon; Erleben, Kenny; Ferguson, Zachary (2 de agosto de 2022). "Simulación de contacto y fricción para gráficos por computadora" . Cursos de ACM SIGGRAPH 2022. ACM. págs. 1–172 . doi : 10.1145/3532720.3535640 . ISBN 978-1-4503-9362-1.
- 1 2 3 4 Hadap, Sunil; Eberle, Dave; Volino, Pascal; Lin, Ming C.; Redon, Stephane; Ericson, Christer (2004-08-08). "Detección de colisiones y consultas de proximidad" . Notas del curso ACM SIGGRAPH 2004. ACM. pág. 15. doi : 10.1145/1103900.1103915 . ISBN 978-1-4503-7801-7.
- 1 2 3 Cohen, Jonathan D.; Lin, Ming C.; Manocha, Dinesh; Ponamgi, Madhav (1995). "I-COLLIDE: Un sistema interactivo y exacto de detección de colisiones para entornos a gran escala" . Actas del simposio de 1995 sobre gráficos 3D interactivos - SI3D '95 . ACM Press. págs. 189 y siguientes. doi : 10.1145/199404.199437 . ISBN 978-0-89791-736-0.
- ↑ Akenine-Möller, Tomas; Haines, Eric; Hoffman, Naty; Pesce, Ángel; Iwanicki, Michał; Hillaire, Sébastien (2018). Representación en tiempo real . Un libro de AK Peters (4ª ed.). Boca Raton Londres Nueva York: CRC Press, Taylor & Francis Group. ISBN 978-1-138-62700-0.
- ↑ Klosowski, James T; Held, Martin; Mitchell, Joseph SB; Sowizral, Henry; Zikan, Karel (1998). "Detección eficiente de colisiones mediante jerarquías de volúmenes delimitadores de k-DOPs". IEEE Transactions on Visualization and Computer Graphics . 4 (1). IEEE: 21– 36. doi : 10.1109/2945.675649 .
- ↑ Ericson, Christer (22 de diciembre de 2004). Detección de colisiones en tiempo real . Serie Morgan Kaufmann en tecnología 3D interactiva ( ed. posterior). Ámsterdam Heidelberg: Elsevier. págs. 329–338 . ISBN 978-1-55860-732-3.
- ↑ Gan, Baiqiang; Dong, Qiuping (2022). "Un algoritmo óptimo mejorado para la detección de colisiones de cuadros delimitadores jerárquicos híbridos" . Evolutionary Intelligence . 15 (4): 2515– 2527. doi : 10.1007/s12065-020-00559-6 .
- ↑ Caldwell, Douglas R. (29 de agosto de 2005). "Desvelando los misterios del cuadro delimitador" . Centro de Investigación y Desarrollo de Ingenieros del Ejército de los EE. UU., Centro de Ingeniería Topográfica, División de Investigación, Rama de Generación y Gestión de Información. Archivado del original el 28 de julio de 2012. Consultado el 13 de mayo de 2014 .
- 1 2 Lin, Ming C (1993). "Detección eficiente de colisiones para animación y robótica (tesis)" (PDF) . Universidad de California, Berkeley. Archivado del original (PDF) el 28 de julio de 2014.
- ↑ Gilbert, EG; Johnson, DW; Keerthi, SS (1988). "Un procedimiento rápido para calcular la distancia entre objetos complejos en el espacio tridimensional" (PDF) . IEEE Journal on Robotics and Automation . 4 (2): 193– 203. doi : 10.1109/56.2083 .
- ↑ "Componentes del Amiga: El MC68000 y los chips personalizados del Amiga" (Manual de referencia) (2.1 ed.). Capítulo 1. Archivado del original el 17/07/2018 . Recuperado el 17/07/2018 .
Además, puede usar el hardware del sistema para detectar colisiones entre objetos y hacer que su programa reaccione a dichas colisiones.
- ↑ "Hitbox" . Comunidad de desarrolladores de Valve . Valve . Consultado el 18 de septiembre de 2011 .
Enlaces externos
- Detección de colisiones en animaciones CSS
- Sitio web de investigación sobre detección de colisiones de la Universidad de Carolina del Norte en Chapel Hill
- Sitio web del profesor Steven Cameron (Universidad de Oxford) sobre detección de colisiones.
- Cómo evitar una colisión, por George Beck, Proyecto de demostraciones de Wolfram .
- Cuadros delimitadores y su uso
- Teorema del eje de separación
- Colisión 3D de Unity
- Colisión de Física de Godot
- Geometría computacional
- Gráficos por computadora
- desarrollo de videojuegos
- Motores de física computacional
- Ingeniería robótica