试图模拟从波罐壁界定的一维波

时间:2014-05-24 15:35:13

标签: matlab animation physics waveform boundary

我已经阅读了

的答案

尝试模拟一维波形,并发现代码有用。

Trying to simulate a 1-dimensional wave

我正在制作一个有船和波浪的视频游戏,波浪需要从船的垂直侧面和一个终点反弹。当我看到波在到达边界点时总是反转,我希望脉冲在没有反转的情况下反弹。物理串模型将是一个连接到环上的质量串,它在反射的边界上滑动一个极点,而不是固定在一个点上,在这种情况下波反转。

注记。 这里描述了一种超级简单且更快速的方法。它只有一行代码和一个循环,非常逼真。

http://users.softlab.ece.ntua.gr/~ttsiod/wavePhysics.html# fn + 1(i)= 0.99(fn(i-1)+ fn(i + 1)-fn-1(i))< - 这提供了稳定的波,其失去调节阻尼的能量.99。 .99999或1它将永远反弹。但是我没有看到如何添加和调整K。

更重要的是,我无法设置边界条件,使波从端点反弹而不反转。

我能做的最好的事情就是将最后一个bin设置为它左边的一个bin,意思是自由端的vel = 0,但是波浪只是结束而不会像我希望的那样不反转。 _resultWave [_binCount - 1] = _currentWave [_binCount - 2];

有人想出来吗?我会回到更复杂的解决方案中 Trying to simulate a 1-dimensional wave

如果我知道如何应用边界条件,因为我还需要调整K并且不要在超简单方程中看到如何做到这一点。

1 个答案:

答案 0 :(得分:0)

测试了这个调整。我们只需要在右侧完全跳过力,但是在弹跳右侧边界处增加传播位移左侧的力。

  if (i == _binCount - 2)    //how to make a reflecting wave on the right side of the buffer
                    {
                        acc = K * (_previousWave[i - 1] - _previousWave[i]);    
                    }

这是使用“试图模拟一维波浪”中给出的第一个答案,改为c#。

相关问题