你是 PRISM(Precariously Redirected Illumination Safety Management,危险的偏转照明安全管理)的一名研究员,日常工作是使用一套精密激光校准系统,测试实验用的晶体棱镜。
这些晶体正被用于研制下一代光学计算机。每一块晶体都有独特的折射特性,这取决于它的分子结构。
如果晶体受到意料之外的光照,实验室的激光系统就可能损坏它们,所以精确预测光路至关重要。
在激活激光阵列之前,你必须预测出晶体被击中的确切顺序,并用各自的样本 ID 来标识。
看一下这个晶体阵列的配置:
{
"start": { "x": 0, "y": 0, "angle": 0 },
"prisms": [
{ "id": 1, "x": 10, "y": 10, "angle": -90 },
{ "id": 2, "x": 10, "y": 0, "angle": 90 },
{ "id": 3, "x": 30, "y": 10, "angle": 45 },
{ "id": 4, "x": 20, "y": 0, "angle": 0 }
]
}
激光从原点(0, 0)出发,以 0° 角水平向右发射。下面是光束逐步的行进路径:
第 1 步:光束沿 x 轴(y = 0)前进,首先在位置(10, 0)处遇到晶体 #2。这个晶体的折射角是 90°,也就是说,它会把光束弯折到与当前路径垂直的方向。光束原本沿 0° 方向前进,现在被改变方向,转向 90°(正上方)。
第 2 步:光束现在从位置(10, 0)竖直向上前进,在位置(10, 10)处击中晶体 #1。这个晶体的折射角是 -90°,会把光束相对当前方向弯折 -90°。光束原本沿 90° 方向前进,折射后变成 0°(90° + (-90°) = 0°),再次水平向右前进。
第 3 步:从位置(10, 10)出发,光束水平前进,在位置(30, 10)处遇到晶体 #3。这个晶体把光束折射 45°,使其方向变为 45°。光束继续向前,进入阵列之外的空白区域。