这是一篇理解Gerstner Wave的文章。
首先给出理想sin波的方程,假设波位于xoy平面,a是振幅,k是频率,c是波速:
先看上半部分的sin波,红点代表平衡位置,黑点代表表面的偏移位置。可以看到sin波只考虑了垂直方向的移动。从本质上说,水面波是横波和纵波的集合,但上面的正弦波我们只考虑了它的横波分量,即与传播方向垂直的运动。实际上水面波也会在传播方向上运动,我们在日常生活中也经常看到,比如飘在水面的叶子也会在波传播的方向上左右晃动,而非单纯的上下移动。
那么这个纵波具有什么样的特性呢?假设是不可压缩流体,表面质点分布均匀的话,我们知道在波峰的位置,由于表面往上移动,必须要有水流来填补下面的空间,这意味着周边质点汇集。而在波谷的位置,由于表面上的质点往下移动,肯定会将下面的水体挤出,导致下面的质点分散。所以物理正确的波形,在波峰处肯定要陡峭一些,在波谷处肯定要平缓一些。Gerstner波就描述了这种特性:参考上图下半部分,红点代表平衡位置。在波峰附近,周围的质点会向它聚集。在波谷附近,周围的质点会远离它。并且这个纵波刚好与横波相反,横波的波峰对应纵波的波谷,横波的波谷对应纵波的波峰,实际上这时候纵波可以用余弦函数表示。
不妨看一些Gerstner波的演示图:
可以清晰的看到表面质点的汇集和分散现象,同时这里给出了质点的受力分析:水体表面的质点受到重力(向下)和水的压力(指向表面法线方向),两者结合的合力组成了匀速圆周运动的向心力。
参考上图,不止是表面会做这样的圆周运动,在水体内部也一样,只是半径随着深度变大而减小。
wiki上给出Gerstner波的公式如下:这里(a, b)代表是是原始的xy位置,实际上就是一个以(a,b)为圆心的参数方程:
有几点需要修改,首先我们需要波向x轴正方向传播,所以波速c要带负号;其次我们希望y方向初始是sin波,所以需要向右平移PI/2相位;另外根据波速与频率的关系c*c=g/k,得到结果如下:
这里的b代表表面压力,是一个负值,所以exp(kb)介于0~1之间,在b=0时取得最大值1,实践时通常使用陡峭度(steepness)来代替。值越大时,波的幅值越大所以越陡峭。从而得到最终的公式:
参考: