Я надаю спрайт в точних координатах пікселів, щоб уникнути ефекту розмиття, викликаного антиаліазінгом (спрайти - це піксельне мистецтво і виглядало б жахливо, якщо їх відфільтрувати). Однак, оскільки рух об'єктів передбачає змінну швидкість, гравітацію та фізичні взаємодії, траєкторія обчислюється з точністю до пікселів.
При досить великих швидкостях екранного простору (vΔt більше 2 або 3 пікселів) це працює дуже добре. Однак, коли швидкість невелика, може спостерігатися помітний ефект сходів, особливо по діагональних лініях. Це більше не є проблемою при дуже повільних швидкостях екранного простору (v << 1 піксель в секунду), тому я лише шукаю рішення для проміжних значень швидкості.
Зліва - намічена траєкторія великої швидкості, отримана простим округленням координат об'єкта. В середині ви можете бачити, що відбувається, коли швидкість стає меншою, і ефект сходів, про який я говорю. Праворуч - місце траєкторії, яку я хотів би отримати.
Мене цікавлять ідеї алгоритмів для фільтрації траєкторії, щоб мінімізувати згладжування, зберігаючи оригінальну поведінку на великих та малих швидкостях. Я маю доступ до Δt, миттєвого положення та швидкості, а також довільної кількості попередніх значень, але оскільки це імітація в реальному часі, я не знаю про майбутні значення (хоча за необхідності оцінка може бути екстраполірована за певних припущень) . Зауважте, що через фізичне моделювання можуть відбутися і раптові зміни напрямку.
velocity.y / velocity.x
на поправочний коефіцієнт, пропорційний швидкості.