No conozco ningún algoritmo específico para eso en la parte superior de mi cabeza, pero un buen punto de partida es tratar de minimizar la cantidad de veces que necesita hacer una verificación de intersección lenta pero precisa reduciéndola utilizando un método rápido pero áspero, y “profundizando”.
Comience creando un cuadro delimitador para A1 y A2, de tal manera que el cuadro abarque las posiciones mínimas y máximas durante toda la secuencia de tiempo. Asumiendo que simplemente se mueven en línea recta y no giran, esto es muy simple. Simplemente haga un cuadro que cubra toda la forma en t = 0.0 y t = 1.0.
Ahora que tiene los cuadros delimitadores, verifique si se cruzan. Esto es realmente rápido Dado que los cuadros delimitadores están alineados con el sistema de coordenadas global en lugar de las coordenadas locales de las formas, simplemente se convierte (en algún tipo de pseudocódigo):
- ¿Cuál es el máximo común divisor de 55 y 75 usando el algoritmo euclidiano?
- ¿Qué es una cola en la estructura de datos?
- ¿Cómo funciona el algoritmo de búsqueda de ciclo de Floyd? ¿De qué manera mover la tortuga al comienzo de la lista vinculada, mientras se mantiene a la liebre en el lugar de reunión, seguido de mover un paso a la vez, hace que se encuentren en el punto de inicio del ciclo?
- ¿Qué es la representación de colas usando array?
- ¿Cuáles son algunos proyectos geniales de verano de informática personal en IoT y / o algoritmos?
si A1.x1 <A2.x2
y A1.x2> A2.x1
y A1.y1 <A2.y2
y A1.y2> A2.y1:
intersectar = verdadero
más:
intersectar = falso
Ahora viene la parte iterativa: primero verifica si se cruzan en absoluto. Si no lo hacen, sabes que nunca chocarán. Si lo hacen, aún no lo sabe, por lo que debe hacer una verificación más precisa. Divida los desplazamientos de posición por la mitad y vuelva a hacer todo el proceso del cuadro delimitador. Si no se cruzan aquí, sabe que las formas no colisionarán entre t = 0 yt = 0.5, pero aún pueden colisionar entre 0.5 y 1.0, por lo tanto, ahora establezca la posición de inicio en t = 0.5 y el final en t = 1.0, y verifique nuevamente. Siga haciendo este proceso de subdivisión hasta que no encuentre superposiciones o encuentre superposiciones y lo haya reducido lo suficiente como para hacer una verificación más precisa.
Hacerlo de esta manera debería permitirle reducirlo rápidamente a solo algunas cosas que necesita verificar con mayor precisión, y con suerte esto le dará alguna idea de cómo proceder.