¿Qué algoritmo puedo usar para encontrar el camino más corto en un sistema de variante de tiempo?

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):

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.

More Interesting

¿Cómo se debe aprender la codificación, haciendo algoritmos, desde el nivel básico, dado que no tiene experiencia en codificación? (especialmente desde el punto de vista de la colocación y también dado el hecho de que me queda un año para que comience mi temporada de colocación).

Cómo contar el número de enteros palindrómicos dentro de un rango [A, B] donde A y B pueden ser de hasta 10 ^ 17

¿Cuál es el mejor algoritmo para encontrar si 3 números son coprimos? ¿Como funciona?

¿Cómo se debe comenzar a aprender Algoritmos?

¿Cómo funciona el ciclo for de este algoritmo?

¿Qué algoritmos gráficos debe implementar un estudiante de segundo año de CS?

¿Cuál es la complejidad temporal del montón y el tipo de montón?

¿Cuál es el algoritmo de clasificación menos eficiente?

¿Desarrolla algoritmos comerciales después de volver a probar los datos históricos? ¿O debería buscar a través de datos históricos patrones utilizando un algoritmo?

Cómo implementar un algoritmo técnico en papel desde cero en C ++ o MATLAB

¿Por qué necesitamos el término de sesgo en algoritmos ML como la regresión lineal y las redes neuronales?

¿Cuáles son algunas situaciones en las que conceptos algorítmicos como la complejidad del código y la programación dinámica dieron como resultado un mejor código en un proyecto de desarrollo real?

¿Hay alguna manera de girar a la izquierda / derecha una matriz binaria en menos de O (n) tiempo?

En Python, dada la siguiente permutación de a, b, c, d, e, f, g, h, i, j, ¿cuál es la próxima permutación en el orden lexicográfico (diccionario)?

Cómo resolver la siguiente recursividad usando el árbol de recursión