如何按经过的时间缩放 2D 波浪模拟?
How to scale a 2D wave simulation by elapsed time?
我有一个波浪模拟,其值计算如下:(伪代码)
for(x):
for(y):
new_value = (current[x-1,y] + current[x+1,y] + current[x,y-1] + current[x,y+1]) / 2 - previous[x, y]
new_value -= new_value * damp
previous[x, y] = new_value
swap(current, previous)
将周围点的平均值减去该点的先前值。
现在每一帧都会发生变化,所以变化的速度取决于帧率。问题是,我不知道如何按经过的时间来扩展这个过程。我尝试获取新旧值之间的差异并对其进行缩放,但这根本不起作用;可能与电路板交换有关,但我不确定。
我可以让它发挥作用还是我需要一种完全不同的方法?
好的,我明白了。我的问题是基于这样一个事实,即我认为我必须每帧 运行 这个算法——我没有。如果你每隔几帧就 运行 它,那么显然生成的动画并不流畅;但我不认为你可以只进行线性插值来实现从旧状态到新状态的平滑过渡,从而产生我满意的结果。
我有一个波浪模拟,其值计算如下:(伪代码)
for(x):
for(y):
new_value = (current[x-1,y] + current[x+1,y] + current[x,y-1] + current[x,y+1]) / 2 - previous[x, y]
new_value -= new_value * damp
previous[x, y] = new_value
swap(current, previous)
将周围点的平均值减去该点的先前值。
现在每一帧都会发生变化,所以变化的速度取决于帧率。问题是,我不知道如何按经过的时间来扩展这个过程。我尝试获取新旧值之间的差异并对其进行缩放,但这根本不起作用;可能与电路板交换有关,但我不确定。
我可以让它发挥作用还是我需要一种完全不同的方法?
好的,我明白了。我的问题是基于这样一个事实,即我认为我必须每帧 运行 这个算法——我没有。如果你每隔几帧就 运行 它,那么显然生成的动画并不流畅;但我不认为你可以只进行线性插值来实现从旧状态到新状态的平滑过渡,从而产生我满意的结果。