Questo è un esempio di ciò che voglio fare tramite il codice. So che puoi usare la ricerca del punto di salto per passare facilmente dal nodo verde al nodo rosso senza problemi, o anche A *. Ma come si calcola questo con gli orditi.
Nell'immagine, puoi vedere che ci vogliono solo 8 mosse per passare dal nodo verde al nodo rosso quando prende il percorso blu. Il percorso blu sposta istantaneamente la tua posizione da un nodo viola a quello successivo. Lo spazio nel mezzo che costa 2 mosse è un punto tra due zone di curvatura che devi muovere per raggiungere.
È chiaramente più veloce prendere il percorso blu, dal momento che devi solo spostarti di metà (approssimativamente) fino al percorso giallo, ma come posso farlo programmaticamente?
Allo scopo di risolvere questo problema, supponiamo che ci siano più "orditi" viola intorno al grafico che puoi usare, E sappiamo esattamente dove si deformerà ogni punto viola e dove si trovano sul grafico.
Alcuni orditi viola sono bidirezionali, altri no, il che significa che a volte è possibile inserire un ordito solo da un lato, ma non tornare indietro dopo l'ordito.
Ho pensato alla soluzione e ho solo concluso che sarei stato in grado di calcolare il problema controllando la distanza da ciascun punto di curvatura (meno i punti unidirezionali) e la differenza tra quei punti e i punti vicini a loro .
Il programma dovrebbe capire in qualche modo che è più vantaggioso fare il secondo ordito, invece di camminare dal primo salto. Quindi, invece di spostare 6 punti, quindi deformare, quindi spostare i rimanenti 8 passi a piedi (che è anche più veloce del non usare affatto gli orditi), prenderebbe le 6 mosse, quindi le due mosse sul secondo ordito.
EDIT: mi sono reso conto che il percorso blu in realtà richiederà 12 mosse, anziché 8, ma la domanda rimane la stessa.