你可能像许多其他人一样,使用过全球定位系统(GPS),但可能好奇过它是如何工作的。GPS 定位基于一组绕地球运行的卫星。所有卫星都有一个同步的内部时钟。它们通过无线电波持续向地球表面传输其内部时钟的值。GPS 接收器同时收集来自视野内某些卫星的测量数据。在时间 $t$ 收集到的时间测量值 $t_1, \dots, t_m$ 通常是不同的,因为每颗卫星到接收器的距离各不相同。由于我们知道所有卫星的精确轨道,因此我们确切地知道每颗卫星发送信号时的位置。基于这些位置和距离,我们可以计算出我们的位置。为了计算出唯一的位置,假设我们在地球表面,我们需要至少 3 个来自卫星的测量值。
然而,你的任务不是计算你自己的位置,而是确定你从哪些卫星接收到了信号。具体来说:给定你在地球上的地理坐标以及所有卫星轨道的描述,你需要为每颗卫星确定: 从卫星在特定时间发送的信号是否会到达你这里(如果信号没有穿过地球,则会到达)。 如果信号确实到达了你这里,计算信号从卫星传播到你所在位置所需的时间。
请记住,无线电波沿直线传播,速度为光速,我们假设光速为 $299\,792\,458$ 米每秒。我们假设地球是一个半径为 $6\,371\,\text{km}$ 的完美球体,并且所有 GPS 卫星都以固定速度在以地心为圆心的完美圆轨道上绕地球运行。
输入格式
输入包含: 一行包含一个整数 $s$ ($1 \le s \le 10^4$),表示卫星的数量; 一行包含两个实数 $l_o, l_a$,表示你所在位置的经度和纬度; * $s$ 行,每行包含四个实数 $\phi, \psi, r, x$,描述一颗卫星。
对于经度 $l_o \in [-180, 180]$,正值表示东经,负值表示西经。 对于纬度 $l_a \in [-90, 90]$,正值表示北纬,负值表示南纬。
卫星描述的格式如下: $\phi \in [-180, 180]$ —— 轨道与地球赤道相交的参考经度(每个轨道至少与赤道相交两次)。正经度表示东经,负经度表示西经。 $\psi \in [0, 360]$ —— 轨道在经度 $\phi$ 处穿过赤道时,轨道与地球向东赤道之间的夹角。$0$ 到 $180$ 之间的值表示向北运动,而 $180$ 到 $360$ 之间的值表示向南运动。如果轨道与赤道共面,则角度 $\psi$ 为 $0$ 或 $180$。 $r \in [7\,000, 10^6]$ —— 卫星轨道半径,单位为千米。 $x \in [0, 1)$ —— 信号发送时卫星已覆盖的轨道分数,从其在 $\phi$ 处与赤道的交点开始计算。
图 G.1:卫星坐标示意图。卫星轨道以红色显示,其实际位置为红点。在地球上,赤道和本初子午线用线条标出。虚线与赤道共面,且半径与卫星轨道相同。角度 $\phi$ 和 $\psi$ 在输入部分进行了描述。黑点是你在地表的位置,你应该计算信号沿蓝线传播所需的时间。
说明:输入中的所有实数最多给出小数点后 3 位。保证每颗卫星距离你所在位置的切平面至少 1 米(这意味着你可以在解题中安全地使用浮点运算)。
输出格式
对于每颗卫星,如果来自该卫星的信号无法到达你这里,输出 no signal。
如果卫星信号确实到达了你这里,输出信号从卫星传播到你所在位置所需的时间,单位为秒。时间必须精确到相对误差或绝对误差(取较小者)不超过 $10^{-7}$。
样例
样例输入 1
3 45.0 45.0 0.0 45.0 7500.0 0.125 0.0 60.0 7000.0 0.3 -50.0 5.0 25000.0 0.3
样例输出 1
0.00773245 no signal 0.0690288