桌面上的光速
物理学中一个难以理解的领域是相对论。基本上,相对论分为广义相对论和狭义相对论。广义相对论处理大质量和高能量,并描述时空如何被它们扭曲。狭义相对论处理高速运动时发生的情况。当速度接近光速 c 时,会发生许多奇怪且违反直觉的效应。问题在于,这些类型的条件远超出正常经验范围,因此人们没有任何关于这些效应看起来像什么样的参考框架——这就是“光速”的用武之地。
“光速”是一个 OpenGL 程序,它展示了一个物体在越来越接近光速时会是什么样子。“光速”实际上模拟了当您接近光速时发生的四种不同的效应。第一个效应称为洛伦兹收缩。这种效应使物体在运动方向上看起来会收缩。这会按一个称为伽马的因子进行缩放。伽马的计算公式为:
1 / sqrt(1 - v2/c2)。
因此,正如您所看到的,当您的速度 (v) 越来越接近光速 (c) 时,伽马值会趋于无穷大。长度收缩的计算公式为:
l' = l / 伽马。
这意味着物体在运动方向上的长度 (l) 随着速度向光速增加而趋于零。
“光速”模拟的第二个效应是多普勒频移。您可能已经注意到消防车鸣笛驶过时的声音多普勒频移。当它经过时,您可以听到声音频率从高到低的偏移。光也会发生同样的事情。当光源朝您移动时,它的颜色会向蓝色偏移。当它远离您时,颜色会向红色偏移。
第三个效应被称为“头灯效应”。当您有一个移动的光源时,如果该光源正在移动,则在所有方向上发出的光量并不相同。如果光朝您照射过来,它会显得更亮。如果它正在远离您,它会显得更暗。
“光速”模拟的最后一个效应被称为光学像差。由于光以有限的速度传播,因此来自物体不同部分的光在不同时间到达您这里。最终效果是,当物体朝您移动时,它看起来会被拉伸。并且,当它远离您时,它看起来会被挤压。这实际上与洛伦兹收缩不同。
那么,如何才能看到一个物体在考虑所有这些效应的情况下会是什么样子呢?这就是“光速”的用武之地。大多数发行版都应该有一个可用的软件包,您可以使用其软件包管理系统进行安装。如果您有兴趣从源代码构建,它托管在 SourceForge 上。当您首次启动它时,它会打开一个立方体,该立方体设置在由杆表示边缘和球表示顶点的场中间(图 1)。初始速度设置为 1m/s。由于这是一个 OpenGL 程序,您只需用鼠标抓住立方体并将其旋转或上下旋转,即可更改物体的视图。在最右侧,您可以设置物体相对于您的速度,从 1m/s 一直到 299,792,457m/s(光速为 299,792,458m/s)。

图 1. 启动“光速”时的初始场景
您可以通过选择菜单选项“文件”→“新建晶格”(图 2)来更改默认立方体对象的尺寸。您可以设置在三个维度中的每个维度中绘制多少个球。您还可以更改在显示器上渲染对象时的平滑度因子。在这种情况下,它看起来会如图 3 所示。

图 2. 设置对象中的顶点数

图 3. 更改渲染的平滑度
您还可以选择加载您自己的 3D 对象,无论是 3D Studio 格式 (*.3DS 或 *.PRJ) 还是 LightWave 格式 (*.LWO)。这个新对象将被渲染,并且光学效应将应用于此。您可以以 PNG 或 TIFF 格式保存特定对象在特定速度下的快照。您还可以导出为 SRS 文件格式(特殊相对论场景)。这是一种由程序 BACKLIGHT 使用的格式,BACKLIGHT 是一种专门用于说明相对论效应的光线追踪器。这使您可以生成受影响物体的更高分辨率图像。
在“对象”菜单项中,有用于绘制补充对象的选项。默认情况下,浮动网格处于选中状态。您还可以选择坐标轴,标识 x、y 和 z 轴。您还可以选择显示对象的边界框(图 4)。

图 4. 显示坐标轴和对象周围的边界框
此外,您可以通过在菜单中选择“对象”→“动画”来为场景添加动画效果。这将弹出一个对话框,您可以在其中选择 x 轴上的起点和终点以及循环时间(以秒为单位)(图 5)。然后,场景将一直动画化,直到您单击“停止”。

图 5. 设置对象动画的选项
上面,我研究了“光速”可以建模并应用于您的对象的四种效应。默认情况下,所有效应在您启动时都处于选中状态。如果您想更改正在建模的效应,您可以转到“扭曲”菜单项并选择洛伦兹收缩、多普勒红/蓝移、头灯效应或光学像差的任意组合。因此,您可以仅选择洛伦兹收缩,并查看它在 90% 光速下的外观(图 6)。

图 6. 查看 0.9c 下的洛伦兹收缩
您还可以很好地控制“光速”中的相机。您可以选择相机镜头的焦距,范围从 28 毫米到 200 毫米。您甚至可以通过选择“相机”→“镜头”→“自定义”来设置自定义镜头焦距。您可以通过单击“相机”→“位置”来精确设置相机的位置。这将显示一个弹出对话框,您可以在其中设置其位置的精确 x、y 和 z 值(图 7)。

图 7. 更改相机位置以获得更好的视野
您可以通过选择菜单项“相机”→“信息显示”来选择屏幕上显示的信息。您可以让速度、时间、伽马因子和/或帧速率显示在屏幕上。
默认背景颜色为黑色,但您可以将其更改为灰色、白色或非常白色。此显示器是 OpenGL 显示器,因此您可以选择渲染模式。默认值为着色,但您可以将其更改为线框渲染。
一个非常酷的选项是,您可以通过选择“相机”→“生成相机”来生成其他相机。这使您可以同时从多个不同的角度查看您的对象。因此,现在您可以同时看到它来回移动时的样子(图 8)。

图 8. 设置多个相机以获得不同的视角
一旦您设置了速度和相对论效应,您可能想要与对象进行一些交互,以查看它从不同方向等看起来如何。如果您单击鼠标左键并拖动,您的对象将被旋转。如果您单击鼠标左键并同时按下 Shift 键,相机视图将移动,指向不同的方向。您可以通过单击鼠标中键并上下或左右移动来移动相机本身。您可以通过单击鼠标右键并上下滑动来将相机移入和移出对象。如果您完全搞砸了您的视图,您始终可以通过单击菜单项“相机”→“重置视图”来返回默认设置。
因此,当您学习狭义相对论时,请记住这个程序。现在,您终于可以看到如果您在 LHC 中与质子一起在隧道中移动,或者《星际迷航》企业号以亚光速飞行时,它真正看起来会是什么样子。