Este es un ejemplo de lo que quiero hacer a través del código. Sé que puede usar la búsqueda de puntos de salto para pasar fácilmente del nodo verde al nodo rojo sin problemas, o incluso A *. Pero, ¿cómo se calcula esto con urdimbres?
En la imagen, puede ver que solo se necesitan 8 movimientos para pasar del nodo verde al nodo rojo al tomar el camino azul. El camino azul mueve instantáneamente su posición de un nodo morado al siguiente. El espacio en el medio que cuesta 2 movimientos es un punto entre dos zonas de urdimbre al que debes moverte para llegar.
Es claramente más rápido tomar el camino azul, ya que solo necesita moverse la mitad (aproximadamente) hasta el camino amarillo, pero ¿cómo hago esto programáticamente?
Con el fin de resolver este problema, supongamos que hay varias "deformaciones" púrpuras alrededor del gráfico que puede utilizar, Y sabemos exactamente dónde se deformará cada punto púrpura y dónde están en el gráfico.
Algunas urdimbres púrpuras son bidireccionales, y otras no lo son, lo que significa que a veces solo puede ingresar una urdimbre desde un lado, pero no retroceder después de la deformación.
Pensé en la solución, y solo concluí que sería capaz de calcular el problema al verificar la distancia a cada punto de deformación (menos los puntos unidireccionales), y la diferencia entre esos puntos y los puntos cercanos a ellos .
El programa tendría que descubrir de alguna manera que es más beneficioso tomar la segunda deformación, en lugar de caminar desde el primer salto. Entonces, en lugar de mover 6 puntos, luego deformar, luego mover los 8 pasos restantes a pie (que también es más rápido que no usar deformaciones), tomaría los 6 movimientos, luego los dos movimientos a la segunda deformación.
EDITAR: Me di cuenta de que el camino azul en realidad tomará 12 movimientos, en lugar de 8, pero la pregunta sigue siendo la misma.