Sto eseguendo il rendering di sprite con esatte coordinate pixel per evitare l'effetto sfocato causato dall'antialias (gli sprite sono pixel art e apparirebbero orribili se filtrati). Tuttavia, poiché il movimento degli oggetti comporta velocità variabile, gravità e interazioni fisiche, la traiettoria viene calcolata con precisione subpixel.
A velocità dello spazio dello schermo sufficientemente grandi (vΔt maggiore di 2 o 3 pixel) funziona molto bene. Tuttavia, quando la velocità è piccola, può apparire un evidente effetto scala, specialmente lungo linee diagonali. Questo non è più un problema a velocità dello schermo molto lente (v << 1 pixel al secondo), quindi sto solo cercando una soluzione per valori di velocità intermedi.
A sinistra è la traiettoria tracciata per una grande velocità, ottenuta per semplice arrotondamento delle coordinate dell'oggetto. Nel mezzo puoi vedere cosa succede quando la velocità si riduce e l'effetto della scala di cui sto parlando. A destra, il luogo della traiettoria che vorrei ottenere.
Sono interessato alle idee dell'algoritmo per filtrare la traiettoria al fine di minimizzare l'aliasing, mantenendo il comportamento originale a velocità grandi e piccole. Ho accesso a Δt, posizione istantanea e velocità, nonché a un numero arbitrario di valori precedenti, ma poiché si tratta di una simulazione in tempo reale, non conosco i valori futuri (anche se, se necessario, una stima potrebbe essere estrapolata in base a determinati presupposti) . Si noti che a causa della simulazione fisica, possono anche verificarsi improvvisi cambi di direzione.
velocity.y / velocity.x
per un fattore di correzione proporzionale alla velocità.