Scusa eventuali errori matematici che potrebbero apparire sotto, ma l'approccio di base è valido.
Puoi rappresentare le coordinate della tua nave usando le equazioni parametriche.
Pxy(t) = (x(t),y(t))
Significa che la posizione x della nave è rappresentata come una funzione del tempo e indipendentemente dal fatto che la posizione y è rappresentata come una funzione del tempo.
Ad esempio,
Xa(t) = t; Ya(t) = 2t + 5
rappresenterebbe una linea retta con coordinate (0, 5) at = 0.
Xb(t) = t - 4; Yb(t) = t + 10
rappresenterebbe una linea retta con coordinate (-4, 10) at = 0.
Quindi inserisci entrambe le equazioni parametriche della nave nella formula della distanza per calcolare la distanza l'una dall'altra al tempo = t.
D = sqrt((Xa(t) - Xb(t))2 + ((Ya(t) - Yb(t))2)
Utilizzando gli esempi sopra
D = sqrt((t - (t -4))2 + ((2t + 5) - (t + 10))2)
D = sqrt(16 + t2 -10t + 25) = sqrt(t2 - 10t + 41)
Quindi risolvi l'equazione per il suo minimo (t = 5)
Inserisci il valore per t nella formula della distanza e hai la distanza minima e il tempo tra le 2 navi.
La cosa interessante di questo metodo è che le tue navi non devono viaggiare in linea retta (come nell'esempio sopra), purché le loro posizioni possano essere rappresentate da una funzione. Naturalmente, più il percorso è complesso, più è difficile risolvere il minimo.
Inoltre, questo approccio si traduce in qualsiasi numero di dimensioni in cui vuoi lavorare, non solo in 2-D.
Inoltre, mostra uno dei molti usi di quella classe di calcolo che tutti pensano sia inutile per l'informatica.
Se limiti i movimenti delle navi a linee rette, questo dovrebbe essere relativamente semplice da implementare e funzionerà abbastanza rapidamente. Non penso che esista un modo più rapido e accurato per farlo.
Un'altra cosa buona con questo metodo è che è deterministico in quanto tempo ci vorrà per eseguire. Gli altri suggerimenti per incrementare il tempo e vedere cosa ottieni potrebbero richiedere un numero molto elevato di incrementi per ottenere una risposta. Non saprai quanto tempo ci vorrà prima di eseguirlo per ogni situazione.