FFT與遊戲開發(二)

2022-08-15 02:06:22 字數 893 閱讀 9727

首先補充下傅利葉變換的原理——把函式分解到一系列正交基上,這些正交基復合下面的條件:

\[\begin

\int_^ f_k(x) f_j(x) \mathrm d x \neq 0 & k=j \\

\int_^ f_k(x) f_j(x) \mathrm d x = 0 & k\neq j

\end

\]其實這就是一種基的變換,圖形學中也有一些變換,如座標系的變換,球面函式變換到sh,sg等等。

和一維dft一樣,二維dft所做的事情是把二維空間上的訊號分解上二維空間上不同方向的三角函式訊號之和。下**釋了這一點。

注意到轉換後的結果是旋轉對稱的,一維dft的結果也可以看出來是對稱的。

一維dft的輸入

一維dft的輸出

原始公式:

\[f(k, l) = \frac \sum_^ \sum_^ f(m, n) e^m + \fracn

\right)}

\]注意到,這個計算是可分離的,就是可以把二維dft的計算分成內外兩層1維dft的計算:

\[f(k, l) =

\frac \sum_^ \left[

\frac \sum_^ f(m, n) e^}

\right] e^}

\]具體做法是,對每行/列元素進行一次dft之後,對結果的每一列/行再進行一次dft。

FFT與遊戲開發(五)

先放結果展示 海浪的模擬,可以理解為一堆任意方向的正弦波的疊加,這些正弦波的頻譜 相位和振幅 會隨著時間而變化。h overrightarrow x,t sum tilde h overrightarrow k,t e begin 其中 l m,l n為整個m n個網格的邊長 overrightar...

FFT演算法理解與實現 二

快速傅利葉變換 二 fft演算法參考本書第12章 fft演算法主要流程 1.把乙個n點的時域訊號分解成n個單點時域訊號 2.計算n個單點時域訊號的頻譜 3.將n個頻譜合成乙個n點的頻譜。參考 bit reversal sorting public struct complex public doub...

畫素鳥遊戲開發(二)

一 場景布置。1 在vs2010裡新建乙個winfrom的程式程式命名為flybird。然後vs會新建乙個windwos的應用程式,該程式擁有乙個預設的窗體form1。2 設定form1的相關屬性。1 設定form1的text屬性為遊戲的標題flybird。為了實現選單欄顯示的遊戲標題 2 設定fo...