我在精确的像素坐标处渲染精灵,以避免因抗锯齿而引起的模糊效果(精灵是像素艺术的,如果进行过滤,效果会很糟)。但是,由于对象的移动涉及可变的速度,重力和物理相互作用,因此轨迹以亚像素精度计算。
在足够大的屏幕空间速度(vΔt大于2或3像素)下,此效果很好。但是,当速度较小时,会出现明显的阶梯效应,尤其是沿对角线时。在非常慢的屏幕空间速度(v << 1像素/秒)下,这不再是问题,因此我只在寻找中等速度值的解决方案。
左图是通过简单舍入对象坐标获得的大速度绘制的轨迹。在中间,您可以看到当速度变小时会发生什么,以及我正在谈论的阶梯效应。在右边,我想获得的轨迹轨迹。
我对算法思想感兴趣,以便对轨迹进行滤波,以最大程度地减少混叠,同时保留大小速度下的原始行为。我可以访问Δt,即时位置和速度以及任意数量的先前值,但是由于它是实时模拟,所以我不知道将来的值(尽管如有必要,可以在某些假设下推断出估算值) 。请注意,由于物理模拟的缘故,方向突然改变也会发生。
velocity.y / velocity.x
与速度成比例的校正系数来解决。