La detección de colisiones es el problema computacional de detectar la intersección de dos o más objetos. La detección de colisiones es un tema clásico de la geometría computacional y tiene aplicaciones en diversos campos de la informática, sobre todo en gráficos por ordenador , juegos de ordenador , simulaciones por ordenador , la robótica y la física computacional . Los algoritmos de detección de colisiones se pueden dividir en operaciones sobre objetos 2D y 3D. [1]
Descripción general
En la simulación física , se llevan a cabo experimentos, como jugar al billar . La física de las bolas de billar que rebotan es bien conocida, bajo el paraguas del movimiento rígido del cuerpo y las colisiones elásticas . Se daría una descripción inicial de la situación, con una descripción física muy precisa de la mesa y bolas de billar, así como las posiciones iniciales de todas las bolas. Dada una fuerza aplicada a la bola blanca (probablemente como resultado de un jugador que golpea la bola con su taco), queremos calcular las trayectorias, el movimiento preciso y los posibles lugares de descanso de todas las bolas con un programa de computadora . Un programa para simular este juego constaría de varias porciones, una de las cuales se encargaría de calcular los impactos precisos entre las bolas de billar. Este ejemplo en particular también resulta mal condicionado : un pequeño error en cualquier cálculo provocará cambios drásticos en la posición final de las bolas de billar.
Los videojuegos tienen requisitos similares, con algunas diferencias cruciales. Si bien la simulación por computadora debe simular la física del mundo real con la mayor precisión posible, los juegos de computadora deben simular la física del mundo real de una manera aceptable , en tiempo real y de manera sólida. Se permiten compromisos, siempre que la simulación resultante sea satisfactoria para los jugadores del juego.
Detección de colisiones en simulación por computadora
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, que resolverá la colisión en los siguientes pasos de tiempo como en la realidad. Debido a la baja suavidad de algunos materiales, esto requiere mucha CPU. Algunos simuladores estiman el momento de la colisión mediante interpolación lineal , retroceden la simulación y calculan la colisión mediante los métodos más abstractos de las leyes de conservación .
Algunos 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 de tiempo para permitir pasos de tiempo aún más finos sin aumentar mucho la demanda de CPU, como en el control del tráfico aéreo .
Después de una colisión inelástica, pueden ocurrir estados especiales de deslizamiento y reposo y, por ejemplo, Open Dynamics Engine usa restricciones para simularlos. Las restricciones evitan la inercia y, por tanto, la inestabilidad. La implementación del descanso mediante un escenario gráfico evita la deriva.
En otras palabras, los simuladores físicos generalmente funcionan de dos maneras, donde la colisión se detecta a posteriori (después de que ocurre la colisión) o a priori (antes de que ocurra la colisión). Además de la distinción 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, los términos "discreto" y "continuo" se utilizan 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, luego se verifica para ver si algún objeto se cruza o si se considera que se cruza visiblemente. En cada paso de la simulación, se crea una lista de todos los cuerpos que se cruzan, y las posiciones y trayectorias de estos objetos se "fijan" para tener en cuenta la colisión. Este método se llama a posteriori porque normalmente no detecta el instante real de la colisión y solo detecta la colisión después de que realmente haya ocurrido.
En los métodos a priori , existe un algoritmo de detección de colisiones que podrá predecir con mucha precisión las trayectorias de los cuerpos físicos. Los instantes de colisión se calculan con gran precisión y los cuerpos físicos nunca se interpenetran. Esto 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.
Los principales beneficios de los métodos a posteriori son los siguientes. En este caso, el algoritmo de detección de colisiones no necesita ser consciente de la gran cantidad de variables físicas; Se alimenta al algoritmo una lista simple de cuerpos físicos y el programa devuelve una lista de cuerpos que se cruzan. El algoritmo de detección de colisiones no necesita comprender la fricción, las colisiones elásticas o, lo que es peor, 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 lidiar con la variable tiempo, que está ausente del problema a posteriori .
Por otro lado, los algoritmos a posteriori causan problemas en el paso de "arreglar", donde las intersecciones (que no son físicamente correctas) necesitan ser corregidas. Además, si el paso discreto es demasiado grande, la colisión podría pasar desapercibida, dando como resultado un objeto que atraviesa otro si es lo suficientemente rápido o pequeño.
Los beneficios de los algoritmos a priori son una mayor fidelidad y estabilidad. Es difícil (pero no completamente imposible) separar la simulación física del algoritmo de detección de colisiones. Sin embargo, en todos los casos, excepto en los más simples, el problema de determinar de antemano cuándo colisionarán dos cuerpos (dados algunos datos iniciales) no tiene una solución de forma cerrada; por lo general, se trata de un buscador de raíces numérico .
Algunos objetos están en contacto de reposo , es decir, en colisión, pero ni rebotan ni interpenetran, como un jarrón que descansa sobre una mesa. En todos los casos, descansando contacto requiere un tratamiento especial: si dos objetos chocan ( a posteriori ) o corredera ( a priori ) y su movimiento relativo es inferior a un umbral, la fricción se convierte en la fricción estática y ambos objetos están dispuestos en la misma rama de la gráfico de la escena .
Mejoramiento
Los enfoques obvios para la detección de colisiones para múltiples objetos son muy lentos. La comparación de cada objeto con todos los demás , por supuesto, funcionará, pero es demasiado ineficaz para usarse cuando el número de objetos es grande. Verificar objetos con geometría compleja entre sí de la manera obvia, verificando cada cara entre sí, es bastante lento. Por lo tanto, se ha realizado una investigación considerable para acelerar el problema. [2]
Explotando la coherencia temporal
En muchas aplicaciones, la configuración de los cuerpos físicos de un paso de tiempo al siguiente cambia muy poco. Es posible que muchos de los objetos no se muevan en absoluto. Los algoritmos se han diseñado para que los cálculos realizados en un paso de tiempo anterior puedan reutilizarse en el paso de tiempo actual, lo que resulta en una finalización más rápida del cálculo.
En el nivel básico de detección de colisiones, el objetivo es encontrar pares de objetos que puedan potencialmente cruzarse. Esos pares requerirán un análisis más detallado. Un algoritmo temprano de alto rendimiento para esto fue desarrollado por Ming C. Lin en la Universidad de California, Berkeley [1] , quien sugirió usar cuadros delimitadores alineados con el eje para todos los n cuerpos en la escena.
Cada caja está representada por el producto de tres intervalos (es decir, una caja sería ). Un algoritmo común para la detección de colisiones de cuadros delimitadores es barrer y podar . Observe que dos de tales cajas, y se cruzan si, y solo si , se cruza , se cruza y se cruza . Se supone que, de un paso de tiempo al siguiente, y se cruzan, entonces es muy probable que en el siguiente paso todavía se crucen. Del mismo modo, si no se cruzaron en el paso de tiempo anterior, es muy probable que no continúen también.
De modo que reducimos el problema al seguimiento, de cuadro a cuadro, qué intervalos se cruzan. Tenemos tres listas de intervalos (una para cada eje) y todas las listas tienen la misma longitud (ya que cada lista tiene una longitud, el número de cuadros delimitadores.) En cada lista, cada intervalo puede cruzarse con todos los demás intervalos de la lista. Entonces, para cada lista, tendremos un matriz de ceros y unos: es 1 si intervalos y se cruzan y 0 si no se cruzan.
Según nuestra suposición, la matriz asociado a una lista de intervalos permanecerá esencialmente sin cambios de un paso de tiempo al siguiente. Para aprovechar esto, la lista de intervalos se mantiene realmente como una lista de puntos finales etiquetados. Cada elemento de la lista tiene la coordenada de un punto final de un intervalo, así como un número entero único que identifica ese intervalo. Luego, ordenamos la lista por coordenadas y actualizamos la matriz.a medida que avanzamos. No es tan difícil creer que este algoritmo funcionará con relativa rapidez si, de hecho, la configuración de los cuadros delimitadores no cambia significativamente de un paso de tiempo al siguiente.
En el caso de cuerpos deformables como la simulación de tela, puede que no sea posible utilizar un algoritmo de poda por pares más específico como se describe a continuación, y un algoritmo de poda de n cuerpos es lo mejor que se puede hacer.
Si se puede colocar un límite superior en la velocidad de los cuerpos físicos en una escena, entonces los pares de objetos se pueden podar en función de su distancia inicial y el tamaño del paso de tiempo.
Poda por parejas
Una vez que hemos seleccionado un par de cuerpos físicos para una mayor investigación, debemos verificar si hay colisiones con más 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. Entonces, ahora tenemos dos conjuntos de triángulos, y (para simplificar, asumiremos que cada conjunto tiene el mismo número de triángulos).
Lo obvio es verificar todos los triángulos. contra todos los triángulos para colisiones, pero esto implica comparaciones, que es muy ineficaz. Si es posible, es deseable utilizar un algoritmo de poda para reducir el número de pares de triángulos que necesitamos verificar.
La familia de algoritmos más utilizada se conoce como método de volúmenes delimitadores jerárquicos . Como paso de preprocesamiento, para cada objeto (en nuestro ejemplo, y ) calcularemos una jerarquía de volúmenes delimitadores . Luego, en cada paso de tiempo, cuando necesitemos verificar si hay colisiones entre y , los volúmenes delimitadores jerárquicos se utilizan para reducir el número de pares de triángulos considerados. Para simplificar, daremos un ejemplo usando esferas delimitadoras, aunque se ha observado que las esferas son indeseables en muchos casos. [ cita requerida ]
Si es un conjunto de triángulos, podemos calcular previamente una esfera delimitadora . Hay muchas formas de elegir, solo asumimos que es una esfera que contiene completamente y es lo más pequeño posible.
Antes de tiempo, podemos calcular y . Claramente, si estas dos esferas no se cruzan (y eso es muy fácil de probar), tampoco y . Sin embargo, esto no es mucho mejor que un algoritmo de poda de n cuerpos.
Si es un conjunto de triángulos, luego podemos dividirlo en dos mitades y . Podemos hacer esto para y , y podemos calcular (de antemano) las esferas delimitadoras y . La esperanza aquí es que estas esferas limítrofes sean mucho más pequeñas que y . Y, si, por ejemplo, y no se cruzan, entonces no tiene sentido marcar ningún triángulo en contra cualquier triángulo en .
Como cálculo previo , podemos tomar cada cuerpo físico (representado por un conjunto de triángulos) y descomponerlo recursivamente en un árbol binario , donde cada nodo representa un conjunto de triángulos, y sus dos hijos representan y . En cada nodo del árbol, podemos calcular previamente la esfera delimitadora.
Cuando llega el momento de probar la colisión de un par de objetos, su árbol de esfera delimitadora se puede utilizar para eliminar muchos pares de triángulos.
Muchas variantes de los algoritmos se obtienen eligiendo algo diferente a una esfera para . Si uno elige cuadros delimitadores alineados con el eje , obtiene AABBTrees. Los árboles de caja delimitadora orientados se denominan árboles OBB. Algunos árboles son más fáciles de actualizar si cambia el objeto subyacente. Algunos árboles pueden acomodar primitivas de orden superior como splines en lugar de simples triángulos.
Detección exacta de colisiones por pares
Una vez que terminamos de podar, nos queda una cantidad de pares candidatos para verificar la detección exacta de colisiones.
Una observación básica es que para dos objetos convexos cualesquiera que estén separados, se puede encontrar un plano en el espacio de modo que un objeto se encuentre completamente en un lado de ese plano y el otro objeto en el lado opuesto de ese plano. Esto permite el desarrollo de algoritmos de detección de colisiones muy rápidos para objetos convexos.
Los primeros trabajos en esta área incluyeron métodos de " plano de separación ". Dos triángulos chocan esencialmente solo cuando no pueden ser separados por un plano que atraviesa tres vértices. Es decir, si los triángulos son y donde cada es un vector en , luego podemos tomar tres vértices, , encuentra un plano que atraviese los tres vértices y comprueba si se trata de un plano de separación. Si alguno de esos planos es un plano de separación, se considera que los triángulos están separados. Por otro lado, si ninguno de estos planos separa planos, se considera que los triángulos se cruzan. Hay veinte aviones de este tipo.
Si los triángulos son coplanares, esta prueba no es del todo satisfactoria. Se pueden agregar algunos planos adicionales, por ejemplo, planos que son normales a los bordes de los triángulos, para solucionar el problema por completo. En otros casos, los objetos que se encuentran en una cara plana deben necesariamente encontrarse también en un ángulo en otra parte, por lo tanto, la detección de colisión general podrá encontrar la colisión.
Desde entonces se han desarrollado mejores métodos. Hay disponibles algoritmos muy rápidos para encontrar los puntos más cercanos en la superficie de dos objetos poliédricos convexos. Los primeros trabajos de Ming C. Lin [3] utilizaron una variación del algoritmo simplex de la programación lineal . El algoritmo de distancia de Gilbert-Johnson-Keerthi ha reemplazado ese enfoque. Estos algoritmos se acercan al tiempo constante cuando se aplican repetidamente a pares de objetos estacionarios o de movimiento lento, cuando se usan con puntos de partida de la comprobación de colisión anterior.
El resultado final 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 las típicas computadoras personales y consolas de juegos.
Poda a priori
Cuando la mayoría de los objetos involucrados son fijos, como es típico en los videojuegos, se pueden utilizar métodos a priori que utilizan precomputación para acelerar la ejecución.
La poda también es deseable aquí, tanto la poda de n cuerpos como la poda por pares, pero los algoritmos deben tomar en consideración el tiempo y los tipos de movimientos utilizados en el sistema físico subyacente.
Cuando se trata de la detección exacta de colisiones por pares, esto depende en gran medida de la trayectoria, y casi se tiene que usar un algoritmo numérico de búsqueda de raíces para calcular el instante del impacto.
Como ejemplo, considere dos triángulos que se mueven en el tiempo y . En cualquier momento, se puede verificar la intersección de los dos triángulos utilizando los veinte planos mencionados anteriormente. Sin embargo, podemos hacerlo mejor, ya que estos veinte aviones se pueden rastrear en el tiempo. Si ¿El avión pasa por puntos? en entonces hay veinte aviones para realizar un seguimiento. Cada plano necesita ser rastreado contra tres vértices, esto da sesenta valores para rastrear. El uso de 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. Observamos aquí que 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 localizar el tiempo de colisión exacto usando la fórmula para las raíces del cúbico. Algunos analistas numéricos sugieren que usar la fórmula para las raíces del cúbico no es tan estable numéricamente como usar un buscador de raíces para polinomios. [ cita requerida ]
Partición espacial
Los algoritmos alternativos se agrupan bajo el paraguas de partición espacial , que incluye octrees , partición de espacio binario (o árboles BSP) y otros enfoques similares. Si uno divide el espacio en varias celdas simples, y si se puede demostrar que dos objetos no están en la misma celda, entonces no es necesario verificar la intersección. Dado que los árboles BSP se pueden calcular previamente, ese enfoque es muy adecuado para manejar paredes y obstáculos fijos en juegos. Estos algoritmos son generalmente más antiguos que los algoritmos descritos anteriormente.
Cajas delimitadoras
Los cuadros delimitadores (o volúmenes delimitadores ) suelen ser un rectángulo 2D o un cuboide 3D , pero son posibles otras formas. Un cuadro delimitador en un videojuego a veces se llama Hitbox . Se han probado el diamante delimitador, el paralelogramo delimitador mínimo, el casco convexo, el círculo delimitador o bola delimitadora y la elipse delimitadora, pero los cuadros delimitadores siguen siendo los más populares debido a su simplicidad. [4] Los cuadros delimitadores se utilizan normalmente en la etapa temprana (poda) de la detección de colisiones, por lo que solo los objetos con cuadros delimitadores superpuestos deben compararse en detalle.
Segmentos de centroide de 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 con la malla. Un centroide triangular es un centro de ubicación de masa tal que se equilibraría en la punta de un lápiz. La simulación solo necesita agregar una dimensión de centroide a los parámetros físicos. Dados los puntos del centroide tanto en el objeto como en el 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. Entonces, si sus vértices tienen coordenadas cartesianas, y entonces el centroide es .
Aquí está la función para una distancia de segmento de línea entre dos puntos 3D.
Aquí la longitud / distancia del segmento es un tamaño de segmento de criterio de "impacto" ajustable. A medida que los objetos se acercan, la longitud disminuye hasta el valor umbral. Una esfera triangular se convierte en la prueba de geometría efectiva. Una esfera centrada en el centroide se puede dimensionar para abarcar todos los vértices del triángulo.
Videojuegos
Los videojuegos tienen que dividir su tiempo de cómputo muy limitado entre varias tareas. A pesar de este límite de recursos y del uso de algoritmos de detección de colisiones relativamente primitivos, los programadores han podido crear sistemas creíbles, aunque inexactos, para su uso en juegos [ cita requerida ] .
Durante mucho tiempo, los videojuegos tenían un número muy limitado de objetos para tratar, por lo que comprobar todos los pares no fue un problema. En juegos bidimensionales, en algunos casos, el hardware pudo detectar e informar de manera eficiente los píxeles superpuestos entre los sprites en la pantalla. [5] En otros casos, simplemente colocar la pantalla en mosaico y unir cada sprite en los mosaicos que se superponen 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 usó una o algunas esferas por objeto 3D real para verificaciones por pares. Las comprobaciones exactas son muy raras, excepto en juegos que intentan simular la realidad de cerca. Incluso entonces, los controles exactos no se utilizan necesariamente en todos los casos.
Debido a que los juegos no necesitan imitar la física real, la estabilidad no es un gran problema. Casi todos los juegos utilizan la detección de colisiones a posteriori , y las colisiones a menudo se resuelven utilizando reglas muy simples. Por ejemplo, si un personaje se incrusta en una pared, es posible que simplemente se lo devuelva a su última ubicación buena conocida. Algunos juegos calcularán la distancia que el personaje puede moverse antes de empotrarse en una pared, y solo les permitirán moverse hasta esa distancia.
En muchos casos de videojuegos, la aproximación de los personajes por un punto es suficiente para la detección de colisiones con el entorno. En este caso, los árboles de partición de espacio binario proporcionan un algoritmo viable, eficiente y simple para verificar si un punto está incrustado en el escenario o no. Esta estructura de datos también se puede utilizar para manejar la situación de "posición de reposo" con elegancia cuando un personaje está corriendo por el suelo. Las colisiones entre personajes y las colisiones con proyectiles y peligros se tratan por separado.
Un simulador robusto es aquel que reacciona a cualquier entrada de forma razonable. Por ejemplo, si imaginamos un videojuego de autos de carreras de alta velocidad , de un paso de simulación al siguiente, es concebible que los autos avancen una distancia sustancial a lo largo de la pista de carreras. Si hay un obstáculo poco profundo en la pista (como una pared de ladrillos), no es del todo improbable que el automóvil lo salte por completo, y esto es muy indeseable. En otros casos, la "reparación" que requieren los algoritmos a posteriori no se implementa correctamente, lo que da como resultado errores que pueden atrapar a los personajes en las paredes o permitirles pasar a través de ellos y caer en un vacío sin fin donde puede haber o no un pozo sin fondo mortal. , a veces denominado "infierno negro", "infierno azul" o "infierno verde", según el color predominante. Estos son los sellos distintivos de un sistema de simulación física y detección de colisiones defectuoso. Big Rigs: Over the Road Racing es un ejemplo infame de un juego con un sistema de detección de colisiones fallado o posiblemente faltante.
Hitbox
Un hitbox es una forma invisible que se usa comúnmente en los videojuegos para la detección de colisiones en tiempo real; es un tipo de cuadro delimitador . A menudo es un rectángulo (en juegos 2D) o un cuboide (en 3D) que se adjunta y sigue a un punto en un objeto visible (como un modelo o un objeto). Las formas circulares o esferoidiales también son comunes, aunque todavía se las suele llamar "cajas". Es común que los objetos animados tengan cajas de impacto adjuntas a cada parte móvil para garantizar la precisión durante el movimiento. [6] [ fuente no confiable? ]
Los hitboxes se utilizan para detectar colisiones "unidireccionales", como un personaje que recibe un golpe o una bala. No son adecuados para la detección de colisiones con retroalimentación (por ejemplo, chocar contra una pared) debido a la dificultad que experimentan tanto los humanos como la IA para gestionar las ubicaciones cambiantes de un hitbox; En su lugar, este tipo de colisiones generalmente se manejan con cuadros delimitadores alineados con ejes mucho más simples . Los jugadores pueden usar el término "hitbox" para referirse a este tipo de interacciones independientemente.
Un hurtbox es un término relacionado, usado para diferenciar "objeto que causa daño" de "objeto que recibe daño". Por ejemplo, un ataque solo puede aterrizar si el hitbox alrededor del golpe de un atacante se conecta con uno de los hurtboxes del oponente en su cuerpo, mientras que los hitboxes opuestos que chocan pueden resultar en que los jugadores intercambien o cancelen golpes, y los hurtboxes opuestos no interactúan entre sí. El término no está estandarizado en toda la industria; algunos juegos invierten sus definiciones de "hitbox" y "hurtbox", mientras que otros solo usan "hitbox" para ambos lados.
Ver también
- Prueba de aciertos
- Volumen límite
- Física del juego
- Algoritmo de distancia de Gilbert-Johnson-Keerthi
- Refinamiento del portal de Minkowski
- Motor de física
- Algoritmo de Lubachevsky-Stillinger
- Física de muñeco de trapo
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" . Foro de Gráficos por Computadora . 24 : 61–81. doi : 10.1111 / j.1467-8659.2005.00829.x .
- ^ Jaume, J; Galli, R; Mas, R; Mascaro-Oliver, M (1995) (1995). "Comprobación de colisiones en tiempo real para el posicionamiento de objetos 3D en entornos dispersos" . Procesamiento de imágenes para radiodifusión y producción de video . Talleres de Informática. Procesamiento de imágenes para radiodifusión y producción de video; Springer-Verlag. págs. 216–225. doi : 10.1007 / 978-1-4471-3035-2_18 . ISBN 978-3-540-19947-2.CS1 maint: varios nombres: lista de autores ( enlace )
- ^ Lin, Ming C (1993). "Detección eficiente de colisiones para animación y robótica (tesis)" (PDF) . Universidad de California, Berkeley. Archivado desde el original (PDF) el 28 de julio de 2014. Cite journal requiere
|journal=
( ayuda ) - ^ Caldwell, Douglas R. (29 de agosto de 2005). "Desbloqueo de los misterios del cuadro delimitador" . Centro de Investigación y Desarrollo de Ingenieros del Ejército de EE. UU., Centro de Ingeniería Topográfica, División de Investigación, Rama de Generación y Gestión de Información. Archivado desde el original el 28 de julio de 2012 . Consultado el 13 de mayo de 2014 . Cite journal requiere
|journal=
( ayuda ) - ^ "Componentes del Amiga: El MC68000 y los chips personalizados Amiga" (Manual de referencia) (2.1 ed.). Capítulo 1. Archivado desde el original el 17 de julio de 2018 . Consultado el 17 de julio de 2018 .
Además, puede utilizar el hardware del sistema para detectar colisiones entre objetos y hacer que su programa reaccione ante tales colisiones.
- ^ "Hitbox" . Comunidad de desarrolladores de válvulas . Válvula . Consultado el 18 de septiembre de 2011 .
enlaces externos
- Sitio web de investigación de 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, Wolfram Demonstrations Project .
- Cajas delimitadoras y su uso
- Teorema del eje de separación
- Unidad 3d Collison
- Colisión de la física de Godot