是粒子模拟计算:每一步都更新粒子位置,在下一步粒子位置更新完后即newX值,用于0比较以便要进行该粒子的其他属性更新。但就是这个判断一直无法进行,所以觉得有问题。
如果不存在其他情况,不考虑异常值(inf, nan之类的), 单纯的就这个式子来说,如果是用位置绝对值和0判断的话,
那么如果在一步或者多步都始终陷入了0这里无法出来,则显然只能说是更新增量太小了,计算出来被认为是0了,
也就是你的v * dt太小,这又可以分成2种情况讨论:
(1)v太小(例如非常接近0),导致多次累加乘以dt依然非常接近0, 导致更新失败。这种情况建议考虑上double(你可能需要更换更好的卡),或者考虑累加多次dt一并更新,特别是当你的dt也非常接近0的情况(请考虑两个subnormal的数值,都含有各自的有效数字,然后相乘变成了0的情况)。
(2)v较大,或者v在某次变化后可能会变得较大,则应当只需要考虑是否你选择的dt过小。此时可以简单的通过调整步伐来解决。
请他情况欢迎补充。