2次元回転行列でサイン波
$ z' = z e^{i \omega \Delta t}
回転行列にすれば
$ \left( \begin{matrix} {\rm Re}(z') \\ {\rm Im}(z') \end{matrix} \right) = \left( \begin{matrix} \cos(\omega \Delta t) & -\sin(\omega \Delta t) \\ \sin(\omega \Delta t) & \cos(\omega \Delta t) \end{matrix} \right) \left( \begin{matrix} {\rm Re}(z) \\ {\rm Im}(z) \end{matrix} \right)
コードだと
code:cpp
float c = cos(omega * dt);
float s = sin(omega * dt);
float ret = c * re - s * im;
float imt = s * re + c * im;
周波数が変わらない間は s と c の再計算(重い)が必要なくてすごい
関連