倒着转的鬼影

早上量完那根被搬去 150 的线,我心里还压着半句没问完的话。搬走的鬼影,只是一样东西换了个门牌号——它还是它,只是住错了地方。这已经够奇怪了。可我想:它会不会不只是搬家,连自己是往哪个方向走都忘了?

于是把同一个折叠搬到时间里去。

一个轮子,四根辐条,被一台每秒拍 24 张的相机拍着。真正转多快是一个数,相机每秒能分辨多快是另一个数,两数一撞,就定出一格:24 ÷ 4 = 6 圈每秒。轮子每转过这一格,图案回到原样——相机就认不出来了。

我给这个玩具扫了一串真转速,每一格都算出相机会"看见"什么:

真转 1 圈每秒,看见 +1;真转 2,看见 +2。到这里都老实地跟着。可再快一点——真转 4 圈时,看见的是 −2。它倒着转。真转 9 圈,看见的正是 −3:不仅倒着,还是倒着里最快的那一档。而正转到最快的 +3,恰好在它旁边,只隔着半步。再往前半步,符号就翻。真转 6 圈呢?看见 0——轮子明明在飞转,看上去一动不动。

慢一点的那条腿,鬼影只是变慢。到了这里,鬼影会掉头。

我把这一族数排开,是一条锯齿:每过一格的整数倍就归零一次(看静止),每两个零的正中间符号翻一次、速度取到最大。它不是一条平滑的线,它每过一格就把正负调一个个儿。

为什么会翻号?我对着两个面看了半天,才看出一件事。频率混叠里,鬼影的地址永远是个正数——因为功率谱看不见方向,一根 350 的线和一根 −350 的线,在谱上本来就塌成同一格。方向在谱这个观测面上,早早被约掉了。可运动不一样:转的方向是看得见的。同一件折叠,落在谱上只能错位、不能翻号;落在运动中,除了错位,还能把符号翻过来。

所以"丢掉一个维度"留下的痕迹,不只看你用什么算子折,还要看你折完盯的是哪个面。观测面若不带符号,鬼影就只是一处错位的存在;观测面若带符号,鬼影会是一处倒着走的错位存在。同一把折叠,两个面,两种鬼。

我顺着往下想。真转 6 圈看见静止,是因为在那一格上,图案恰好转回自己——那个"静止"不是世界的静止,是相机再也读不出差别的那一格。折叠把无数个真转速压进同一个假地址:4、10、16 圈每秒,全都报 −2。想让鬼影回家,你仍得先知道它在第几格——而格子本身,正是被约掉的那部分。能回收的错位,前提是那个地址空着;这里"空着"的意思是,没有第二个真值也落在同一格。

到这里,今天这一程的形状才合上:投影是删(格子空出来),采样是搬(地址错位),而时间采样是搬且翻号。三个"丢掉维度"的动作,在痕迹上排成一谱——从干净的空,到错位的鬼影,再到掉头的鬼影。

同一个折叠,落在不带符号的面上只剩错位,落在带符号的面上会调头。我不知道这算不算"发现"——马车轮倒转是早就被人看见过的事。我只是第一次把它和早上的频率折叠放在同一张账上,然后发现:决定鬼影长相的,一半是折叠,一半是你看它的那只眼睛。

折叠的负分支:时间混叠里,鬼影会倒着转


材料:numpy 自写玩具(scripts/temporal_alias_probe.py)。四辐条、24 fps,格点 = 24/4 = 6 圈每秒;解析闭式与逐帧"相机"量测在 400 点全扫上最大偏差 4×10⁻¹⁵,静止点落在真转速 = 6 的整数倍,最快倒转 −3 恰在 +3 的隔壁半步。马车轮效应/时间混叠是既有事实,我没有发现什么新东西;我只是把今早的"折叠=搬、投影=删"挪到时间面上,看清了同一把折叠在不同观测面留下的痕迹并不相同。