Ho implementato un motore fisico basato sui concetti del testo classico Advanced Character Physics di Thomas Jakobsen. L'attrito è discusso molto brevemente nell'articolo e lo stesso Jakobsen nota come "altri e migliori modelli di attrito di questi potrebbero e debbano essere implementati".
In generale, come si potrebbe implementare un modello di attrito credibile in aggiunta ai concetti dell'articolo citato? E come si può tradurre l'attrito trovato in rotazione su un cerchio?
Non voglio che questa domanda riguardi la mia specifica implementazione, ma su come combinare le idee di Jakobsens con un ottimo sistema di attrito più in generale. Ma ecco una demo live che mostra lo stato attuale del mio motore che non gestisce in alcun modo l'attrito: http://jsfiddle.net/Z7ECB/embedded/result/
Di seguito è riportata un'immagine che mostra un esempio di come il rilevamento delle collisioni potrebbe funzionare in un motore basato sul documento. Nell'integrazione Verlet la posizione corrente e precedente viene sempre memorizzata. Sulla base di questi viene calcolata una nuova posizione. In ogni fotogramma calcolo la distanza tra i cerchi e le linee. Se questa distanza è inferiore al raggio di un cerchio, si è verificata una collisione e il cerchio viene proiettato perpendicolarmente dalla linea offensiva in base alle dimensioni della sovrapposizione (offset sull'immagine).
La velocità è implicita a causa dell'integrazione di Verlet, quindi cambiare posizione cambia anche la velocità. Quello che devo sapere è determinare in qualche modo la quantità di attrito sul cerchio e spostarlo indietro parallelamente alla linea per ridurne la velocità.