首页 / 工具 / 傅里叶轮盘画

傅里叶轮盘画

任何闭合曲线都能拆成一串旋转的小圆:复 DFT 给每个圆定下半径 |cₖ|、 转速 k 和初相。圆圆相衔、各转各的,最末端那支笔尖就描出原图。 按能量降序只留前 M 个圆 —— 心形线 3 个圆就成形,五角星的尖角却怎么都磨不平。

曲线

心形线

r = 1 − cosθ:top3 圆就吃掉 99.6% 能量 —— 最"省事"的曲线。

手绘区 · 按住画一圈
—
  • 你的线(自动闭合)
  • 等弧长采样的 256 个点
轮盘 · 前 M 个圆
—
  • 小圆(半径 = |cₖ|,转 k 圈/周期)
  • 笔尖(画出重建线)
  • 目标原图(虚线)
频谱 · 按 |cₖ| 降序(金=启用的前 M 圆)

轮盘账本

—
启用圆数
—
能量占比 Σ|c|²(前M)/Σ|c|²
—
重建误差 max|笔尖−原图|
—
最强分量 k
—
次强分量 k
—
磨平 99.9% 能量要
—

"重建误差"沿时间取最大偏差 —— 能量占比高不代表长得像:尖角占的能量小,却全在轮廓最显眼的地方。

8
1.0×

圆链怎么算

把闭合曲线采成 N 个复数点 z₀…z_{N−1}, 做复离散傅里叶变换:cₖ = (1/N) Σ zₙ e^{−2πikn/N}。 每个 cₖ 是一支"基相量":模 |cₖ| 就是圆半径, k 就是它一个周期里转的圈数(负 k 倒转)。 重建 z(t) = Σ cₖ e^{2πikt} 逐项累加 —— 几何上正是 本轮圆心钉在上轮末端的圆链。

分解 闭合曲线 → 等弧长采 256 点 → DFT → 按 |cₖ| 降序排队
低通 只留前 M 个圆 = 频谱低通滤波;Parseval:Σ|cₖ|² 恰是能量
光滑度 曲线越光滑谱衰减越快:尖角/折点 = 慢衰减的长尾巴

和 FFT 页是同一支变换的两种活法:那页把信号投到单位根上算得快, 这页干脆不加速(256 点朴素 DFT 一次约 6.5 万次复乘,够用了),把注意力全放在 几何上 —— 每个频率原来是个转圈的小圆。

怎么玩

  1. 心形线把 M 从 1 拧到 10。第 3 个圆出现后基本成形,再往上是"过度装修":账本里能量 99.6% 起步。
  2. 换五角星。同样的能量占比,轮廓却差得多 —— 看账本最后一行:"磨平 99.9% 能量"要圆数暴涨。尖角是频谱的照妖镜。
  3. 手绘一条。在左框里按住画圈(自动闭合):画得越圆,前两三个圆就包干全部;画的涂鸦越怪,长尾越长。
  4. 拖到 M=1。只剩最大那支相量:一个以原点为心的转圈,任何曲线都先退化成一个大圆。再把 M 一格一格加回去,看原图一点点"长"回来。
  5. 看频谱条。金色是启用的前 M 根,灰色被低通掉;对数观感下的心形线谱像悬崖,五角星的像沙滩。点某根柱 = 把 M 设到它的名次。
  6. 键盘。空格 = 转起来/停。画布可拖拽平移、滚轮缩放。

为什么"能量高"不等于"画得像"?

Parseval 说的是平方和:尖角、折点这类局部特征占的能量极小(比例上可忽略), 但它们决定了轮廓的观感。所以账本把能量占比和最大重建误差并排放 —— 前者是"用了多少信息",后者才是"像不像"。傅里叶级数在折点处的吉布斯振铃,误差条上看得清清楚楚。