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