三角函数:正弦波与圆周运动
噪声用随机信号驱动无尽的微动;三角函数则给出另一类不收敛、永不停止的运动——
规则的周期。一个 Math.sin(t) 就是最简单的周期性「时间→值」:输入均匀流逝的时间,
输出一条在 −1 与 1 之间平滑往返、永远重复的曲线。给它配上三个旋钮——振幅(往返多远)、
频率(多快重复一次)、相位(从周期的哪一点起步),几乎所有循环类动画(脉动、漂浮、轨道、
波浪)都能由此拼出。
更关键的是:正弦与圆周运动是同一件事。一个点绕单位圆匀速转动,它的两个坐标恰好是
(cos θ, sin θ);盯着整个点看,是圆周运动(轨道、loading 转圈),只盯一个坐标看,
就是上下振荡。本页四个 demo 都由 requestAnimationFrame 持续推进时间 t,
把 sin / cos 实时算出来驱动元素,右侧画出对应的「值随时间」曲线。
小球的垂直位置 = amplitude · sin(2π · frequency · t + phase),中线为 0
同一信号的滚动曲线(最新值在右端,随时间向左推走)
y —
period T=1/f — s
ω=2πf — rad/s
A·sin(ωt + φ),加上一个垂直偏移就能让振荡围绕任意中心进行。
左:点绕圆匀速转,坐标 = (cos θ, sin θ)。右:它的 sin(橙)与 cos(蓝)随 θ 展开成波
θ — rad
sin θ —
cos θ —
(R·cos θ, R·sin θ) 就沿半径 R 的圆匀速绕行——这就是行星轨道、loading 转圈、
时钟指针。而把这个点投影到一根轴上(只取它的 x 或只取它的 y),那一维的来回运动就是纯正弦振荡。
所以一旦需要「绕圈」就用 cos / sin 配对,需要「来回」就用其中一个;频率改 ω、半径改 R、起始角改相位。
余弦不过是相位超前 90° 的正弦(cos θ = sin(θ + π/2)),因此 x、y 两路天生差四分之一周期。
一排元素同频同幅,只是相位逐个错开:第 i 个 = A·sin(ωt − i·Δφ)
Δφ — °/格
每格延迟 — s
两轴各跑一个正弦、频率比 a:b、相差 δ:x=sin(a·u+δ),y=sin(b·u)
频率比 —
δ — °
核心 — 同一组 sin/cos,接到不同维度就是不同动画
至此「不演化到目标」的两类运动都齐了:噪声给出随机而有机的微动, 三角函数给出规则而精确的周期。需要演化到固定目标的塑形见缓动, 交给物理系统自行收敛的见弹簧。