zoukankan      html  css  js  c++  java
  • FFT与游戏开发(二)

    FFT与游戏开发(二)

    首先补充下傅里叶变换的原理——把函数分解到一系列正交基上,这些正交基复合下面的条件:

    [egin{cases} int_{-infty}^{+infty} f_k(x) f_j(x) mathrm d x eq 0 & k=j \ int_{-infty}^{+infty} f_k(x) f_j(x) mathrm d x = 0 & k eq j end{cases} ]

    其实这就是一种基的变换,图形学中也有一些变换,如坐标系的变换,球面函数变换到SH,SG等等。

    一、从一维DFT到二维DFT

    和一维DFT一样,二维DFT所做的事情是把二维空间上的信号分解上二维空间上不同方向的三角函数信号之和。下图解释了这一点。

    注意到转换后的结果是旋转对称的,一维DFT的结果也可以看出来是对称的。

    1. 一维DFT的输入
    2. 一维DFT的输出

    二、二维DFT的可分离特性

    原始公式:

    [F(k, l) = frac{1}{MN} sum_{m=0}^{M-1} sum_{n=0}^{N-1} f(m, n) e^{-j2pi left( frac{k}{M}m + frac{l}{N}n ight)} ]

    注意到,这个计算是可分离的,就是可以把二维DFT的计算分成内外两层1维DFT的计算:

    [F(k, l) = frac{1}{M} sum_{m=0}^{M-1} left[ frac{1}{N} sum_{n=0}^{N-1} f(m, n) e^{-j2pi frac{ln}{N}} ight] e^{-j2pifrac{km}{M}} ]

    具体做法是,对每行/列元素进行一次DFT之后,对结果的每一列/行再进行一次DFT。

  • 相关阅读:
    iOS应用程序生命周期(前后台切换,应用的各种状态)详解
    Urlrewrite
    下载文件、根据链接生成二维码
    三级联动
    easy-ui的datagrid
    $.extend、$.fn.extend
    windows.open、 window.location.href
    JS小整理
    Jsp数字格式化
    同时执行多个$.getJSON() 出现数据混乱的问题的解决
  • 原文地址:https://www.cnblogs.com/hamwj1991/p/12400611.html
Copyright © 2011-2022 走看看