模拟海水,需要计算复杂的数值

时间:2010-09-01 20:42:28

标签: c# math graphics matrix physics

模拟海水: http://www.finelightvisualtechnology.com/docs/coursenotes2004.pdf

我正在尝试模拟海洋,我需要你的帮助。 请耐心等待,我是计算机图形学的新手,但我知道物理和数学的基础知识。如您所见,我需要计算公式:

formula

k 是一个向量, x 是一个坐标(所以我建议它可以等于向量?)。

所以,第一个问题: 如何计算 e 这种奇怪的东西的力量?

其次,它表示h( x ,t)是高度,并且还要获得进行FFT所需的值。我无法理解。

3 个答案:

答案 0 :(得分:2)

可以用sin和cos波来计算虚构的力量 http://upload.wikimedia.org/math/4/0/d/40d9a3c31c4a52cb551dd4470b602d82.png
  wikipedia entry for e

和vector exponentiation也有自己的页面 alt text
matrix exponential

答案 1 :(得分:2)

该等式表示每个xy位置(由 x )h( x ,t)表示的波高的多维傅里叶变换为a具有幅度h~( k ,t)的复指数之和。请注意,被取幂的是点积, k · x ,它具有标量结果。这意味着你正在对一个复数进行取幂,这可以通过使用Euler的正弦和余弦公式轻松完成,如另一篇文章所述。至于实际计算h~,你需要在包含h数据的二维数组上使用多维FFT。我相信你可以使用普通的一维FFT来计算它,但在维基百科上查看如何做到这一点。当你开始使用你的FFT例程时,看看在你的库中使用的数学表示式(即1 / N)之外,将哪些系数放在总和之外,并对其进行校正。

答案 2 :(得分:0)

如果x是坐标(bidimensional?),您可以使用Point类。 Sum中的内容应转换为循环并在k上迭代计算。

FFT是傅立叶变换,搜索Cooley-Tukey算法以快速计算它。