「Fourier Analysis: Drawing Llamas with Circles」はDekau.devの投稿のタイトルで、音声のクリーンアップや画像圧縮に使われる数学的道具を、ふとした遊びの問題――「ラマをどう描くか」――に向き合わせている。
著者の説明では、フーリエ変換とは信号を記述する二つの表現の間を移動する道具である。時間領域では、音波のような時間とともに変わる関数がある。周波数領域では、どの周波数がどの程度含まれるかのリストになる。投稿の古典的な例は正弦波 sin(2π×3t) であり、そのフーリエ変換はプラスとマイナスの3ヘルツに単一のスパスとして現れる。音響エンジニアはこれで不要な低周波ノイズを突き止め、逆変換で除去する。画像処理でもガウシアンブラーやJPEG圧縮に類似の考え方が使われる。
ではこれが描画とどう関係するか。著者の「描画」の定義は、鉛筆を紙に置いたまま描き始め、描き終えるまで持ち上げない一筆書きのパスである。そのようなパスに対し、各ベクトルを端から端へ接続し、それぞれ独自の速度で円を回転させ、前のベクトルの先端に次のベクトルの尾部を固定する。最後のベクトルの先端は動き回り、円をうまく選べば元のスケッチをたどる。
これは多くの人を驚かせる部分であり、幾何学的に立ち止まって考える価値がある。円がすべて互いに内包されているわけではない。それぞれの円の中心は前の円の先端にあり、各円はその移動する中心の周りを回転する。したがって、ある円の運動はそれ以前のすべての円の和になる。小さな円が大きな円の先端で回り、さらに大きな円がそのまた先端で回る、という構造である。投稿は単純な例でこれを示す。あり得ないほど直線から遠い直線が円で描ける。外側の円を小さくして速く回せば、同じ構成で正方形が得られる。第三の円を加えれば魚になる。見出しの例では、著者は1,024個の円を使ってラマを描き、それぞれに独自の周波数・半径・初期角度を与えた。

投稿は幾何学的な例として、直線すら円で描けることを示している。

外側の円を小さくして速く回せば、同じ構成で正方形が得られる。

第三の円を加えれば魚になる。投稿のもう一つの具体例。
矩形波は円で描いた正方形の周波数領域での対応であり、時間領域と周波数領域の双対性を示す。
一つの円でいじれるのはちょうど三つ――回転速度(周波数)、大きさ(半径)、開始位置(位相)である。投稿の重要な単純化は、この三つが一つの複素数にパックできることだ。これは記法のトリックではない。複素数 a + bi は既に二次元空間上の点を符号化し、オイラーの公式が複素指数と回転を結びつける。だから回転ベクトルは自然に複素指数で書け、その速度は位置ベクトルを90度回したものになり、まさに虚数単位が「運動を表す式」に現れる理由である。投稿の「速度は位置と同じだが、実数の代わりに虚数」という記述はこの観察を表す。i を掛けることはベクトルを四分一回転させることになる。
残された問いは、描いたパスから最初から正しい円の集合をどう得るかということだ。これがフーリエ変換の本来の仕事で、投稿は二つの数学的道筋を通してそれを構築する。第一に、複素数を二次元ベクトルとみなすこと。第二に、線形代数――平面の任意のベクトルは基底ベクトルの結合で書き表され、内積が分解したいベクトルに各基底がどの程度含まれるかを測る。投稿は具体的な例を示し、ベクトル (0.7, 1.2) を直交する二つの単位ベクトルで表現し、内積はそれぞれ約1.34と0.35、必要な正確なスケール係数になる。同じ考えを有限の数列から連続関数に拡張したのが内積の積分定義――ある区間で二関数の一方と他方の複素共役の積を周期で割る。フーリエ係数とは、パスと特定周波数の正弦・余弦の内積であり、その周波数がパスにどの程度含まれるかの測定だ。すべての周波数成分を回転円として足し合わせればパスが再構成され、円を多く含めれば含めるほど元の入力に近づく。
著者は数学を書いただけではなく、実装した。GitHubの adekau/fourier プロジェクトはAngularアプリケーションとしてまさにこれを実装しており、ローカル開発サーバーで円がリアルタイムに形を再描画する様子を確認できる。
投稿のできることとできないことは、期待値を正しく設定するために明示すべきである。この手法は一筆書きの連続した閉曲線で機能する。離れたピースやギャップがある描画は、ベクトルの先端が連続的に動き続ける限り「ペンを離す」機構を持たないため、円の連鎖だけでは符号化できない。投稿自身の主張は慎重に表現されており、「ほとんどすべての閉曲線」がこの方法で描けるとされ、1,024個の円は著者の選択例であって理論的な最小値ではない。解説は教育的な概要であり、近似が収束する正確な条件は投稿の範囲外である。
全体として、この記事は複雑な形が単純な周期運動に分解できることを示す驚くべき実例であり、ミックスから一つの楽器を分離したり写真をぼかしたりするのと同じ原理を、今度はスケッチに適用したものだ。抽象的な時間領域から周波数領域への移動を視覚的に具體的に見せるので、教育の道具としても機能する。円が回り、ラマが現れるのを確かに見られるからだ。