前言
FFTOcean是一种基于统计学模型的水面模拟算法,原论文为SIGGRAPH 的一篇文章Simulating Ocean Water。
先看一下效果

一、需要设置的一些参数
首先文章假设节点平面坐标X=(x,z),需要根据X来计算高度y。接着需要设定的参数有:海洋的实际大小(Lx,Lz),将海洋划分为网格的大小(N,M),海洋环境中的风速V,以及风向Vdir,还有幅度A。
二、高度场函数推导
文章先是定义高度场的计算公式为:

其中

为了方便实现,我们假设

故可以把公式(2)改写为


现在公式(1)中还需要计算的就只有h0(K)了,即公式(5)中的h0'(n',m'),h0'*(n',m')为h0'(n',m')的共轭复数,因此不需要额外推导。

公式(6)中,V和W分别为风速和风向,需要自行设定。
高斯随机数的代码为:
float urand()
{
return rand() / (float)RAND_MAX;
}
// Generates Gaussian random number with mean 0 and standard deviation 1.
float gauss()
{
float u1 = urand()
1279




被折叠的 条评论
为什么被折叠?



