Come faccio a far muovere un veicolo in un punto e fermarmi senza sorvolare o oscillare?


9

Ok, quindi considera che abbiamo un veicolo come quello che ho descritto nella mia risposta a questa domanda , con posizione 2D, velocità, velocità angolare e resistenza / attrito. Può accelerare e rompersi di una quantità variabile, ma non fermarsi all'istante o raggiungere la velocità massima all'istante. Come posso spostarlo in un determinato punto e fermarmi - nel minor tempo possibile - senza effettuare il superamento o l'oscillazione?

Stavo pensando a qualcosa del tipo:

  • girare verso la posizione target.
  • accelerare
  • guarda 1 segno in avanti, chiedendo "Se avessi applicato le pause il prossimo segno, avrei superato il bersaglio?"
  • In caso di superamento, applicare ora le interruzioni di un certo importo.

Sono sicuro che questo è un problema risolto e probabilmente esiste un metodo migliore di quello che ho descritto.

Risposte:



3

Usando il calcolo, se conosci la velocità e la velocità di decelerazione massima, puoi conoscere la distanza di arresto minima. Con questo in mente, puoi sapere esattamente quando è necessario applicare i freni (errori di arrotondamento / quantizzazione a parte) per fermarsi a un certo punto.

Ora, si spera che qualcuno migliore in matematica di me pubblicherà la formula reale ...


2
finalPositionDelta = -0.5 * sqr(currentSpeed) / maximumDecelerationTuttavia, ciò presuppone che la decelerazione sia una costante, che a seconda della profondità della simulazione potrebbe non essere il caso. Andrei con la soluzione di Ranieri. (spiacente che sia decelerazione DIV, non mul)
tenpn

Sì, questo metodo è ancora utile anche se lo inquadra come un problema dei sistemi di controllo, perché la comprensione dei gradienti coinvolti dovrebbe aiutare a evitare instabilità o oscillazione nella misurazione dell'errore.
Kylotan,


1

A volte, nello sviluppo del gioco, devi prendere scorciatoie. La scorciatoia qui si chiama Impulse, che fisicamente parlando è una forza molto grande applicata in un tempo molto breve. Invece di integrarlo nel tempo, è sufficiente applicarlo al parametro come modifica diretta: impostare la velocità su 0.

La domanda è: vuoi usare il collegamento o no?


2
Non sono preoccupato di prendere scorciatoie se è invisibile per il giocatore, ma se un veicolo potesse fermarsi morto sul posto sembrerebbe molto strano.
Iain,

1
Questo è certamente vero, tuttavia aiuta a fermarsi esattamente nel punto desiderato dopo una decelarazione, evitando così calcoli complessi e avendo la divisione del passo temporale troppe volte.
ADB
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.