DirectX11海洋模拟实践
框架基于https://www.cnblogs.com/X-Jun/p/9028764.html
尽力用最精简的语言描述FFT海洋
总览
预计算阶段
计算静态海洋频谱值 h0
频谱计算阶段
在此阶段进行更新,引入时间变量
计算高度偏移频谱、水平偏移频谱、法线频谱
逆傅里叶变换阶段
进行二维傅里叶变换
得到偏移数据以及法线数据
最终处理阶段
对数据进行整合
理论
参考https://zhuanlan.zhihu.com/p/64414956
海面的IDFT模型
h(x⃗,t)=∑k⃗h~(k⃗,t)eik⃗⋅x⃗ h(\vec{x}, t)=\sum_{\vec{k}} \tilde{h}(\vec{k}, t) e^{i \vec{k} \cdot \vec{x}} h(x,t)=k∑h~(k,t)eik⋅x
此方程为二维逆傅里叶变换
其中k空间的两个分量定义为
kx=2πnL,n∈{
−N2,−N2+1,…,N2−1}kz=2πmL,m∈{
−N2,−N2+1,…,N2−1} \begin{array}{l} k_{x}=\frac{2 \pi n}{L}, n \in\left\{-\frac{N}{2},-\frac{N}{2}+1, \ldots, \frac{N}{2}-1\right\} \\ k_{z}=\frac{2 \pi m}{L}, m \in\left\{-\frac{N}{2},-\frac{N}{2}+1, \ldots, \frac{N}{2}-1\right\} \end{array} kx=L2πn,n∈{
−2N,−2N+1,…,2N−1}kz=L2πm,m∈{
−2N,−2N+1,…,2N−1}
海洋频谱
菲利普频谱(Phillips spectrum)
h~(k⃗,t)=h~0(k⃗)eiω(k)t+h~0∗(−k⃗)e−iω(k)t \tilde{h}(\vec{k}, t)=\tilde{h}_{0}(\vec{k}) e^{i \omega(k) t}+\tilde{h}_{0}^{*}(-\vec{k}) e^{-i \omega(k) t} h~(k,t)=h~0(k)