[DirectX11]Gerstner波 实现简单的水面模拟

上一篇文章中,介绍了一个简单数值方法来模拟圆形扩散波的效果,但是这种方法对于自然中像海浪一样的波

就无能为力了。所以,这篇文章介绍用Gerstner波来模拟水面波纹效果。

一、Gerstner波介绍

Gerstner波是一种动态模拟海面幅度的方法,已有200多年的历史,后被用于计算机图形学。


首先,我们介绍一下几个常用的描述波函数的物理量,便于理解马上要介绍的Gerstner波方程。

A:amplitude 振幅,波相较于平衡位置的最大偏移量。

ω:角速度。

λ:波长

k:波数 (2π/λ)

K:波矢量(wavevector)其大小为波数,方向为波传播的方向,在3D波方程中,是一个2D向量

现在给出Gerstner波的方程,以参数方程的形式给出:


x=x0-(K/k)*Asin(K*x0-ωt)

y=Acos(K*x0-ωt)


肯定有朋友会问,明明是3D的波方程,为何只有两个变量xy。大家请注意,第一个式子中,加粗的部分,上面

已经介绍过,K是一个2D向量,方向表示在x-z平面波传播的方向,所以第一个加粗的部分(包括x,x0)都不是一个标量,而是一个二元量,表示的是在x-z平面上的具体位置,x=(x,z),x0=(x0,z0)。这样第一个式子得出的结果也自然是一个2D向量(K,x0点乘结果为一个标量)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值