#P16612. [GCPC2018]GPS
[GCPC2018]GPS
题目描述
你和许多人一样,或许使用过全球定位系统(GPS),但也可能好奇它究竟是如何工作的。
GPS 定位依赖一组绕地球运行的卫星。所有卫星都拥有同步的内部时钟,并持续通过无线电波向地球表面发送其内部时钟的数值。GPS 接收器会同时接收若干颗可见卫星发出的信号。在同一时刻 收集到的时间测量值 通常不同,因为每颗卫星与接收器之间的距离不同。
由于所有卫星的轨道都是已知的,我们可以确定每颗卫星发出信号时所在的位置,再根据位置和距离计算接收器的位置。假设接收器位于地球表面,至少需要三颗卫星的测量结果才能唯一确定位置。
不过,你的任务并不是计算自己的位置,而是判断自己收到了哪些卫星的信号。
给定你在地球表面的地理坐标以及所有卫星轨道的描述,对于每颗卫星,你需要确定:
- 卫星在给定时刻发出的信号能否到达你的位置。无线电波沿直线传播;当且仅当传播路径不穿过地球时,信号能够到达;
- 若信号能够到达,计算信号从卫星传播到你所在位置所需的时间。
假设无线电波以光速传播,光速为
将地球视为半径为 千米的完美球体。所有 GPS 卫星均以固定速度沿圆形轨道运行,轨道圆心与地球球心重合。
输入格式
输入包含:
- 第一行一个整数 (),表示卫星数量;
- 第二行两个实数 ,分别表示你所在位置的经度和纬度;
- 接下来 行,每行四个实数 ,描述一颗卫星。
你所在位置的坐标满足:
- 经度 。正数表示东经,负数表示西经;
- 纬度 。正数表示北纬,负数表示南纬。
每颗卫星的参数含义如下:
- :卫星轨道与地球赤道相交处的参考经度。每条轨道至少与赤道相交两次。正数表示东经,负数表示西经;
- :卫星在经度 处穿过赤道时,其运行方向与地球赤道向东方向之间的夹角。 到 之间表示卫星向北运动, 到 之间表示卫星向南运动。若轨道与赤道共面,则 为 或 ;
- :卫星轨道的半径,单位为千米;
- :从轨道在经度 处与赤道的交点开始计算,在信号发出时卫星已经走过的轨道比例。
输入中的所有实数,小数点后最多有三位。
保证每颗卫星与接收点处切平面之间的距离至少为 米,因此可以安全地使用浮点运算。
输出格式
对于每颗卫星输出一行:
- 若该卫星发出的信号无法到达你的位置,输出:
no signal
- 否则,输出信号从卫星传播到你的位置所需的时间,单位为秒。
浮点答案的相对误差或绝对误差不超过 即可。
样例
输入
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
输出
0.00773245
no signal
0.0690288
图示

图中红色曲线表示卫星轨道,红点表示卫星的实际位置。地球表面的实线表示赤道和本初子午线;与赤道共面的虚线圆与卫星轨道具有相同半径。角 和 的含义见输入说明。黑点表示你在地球表面的位置,需要计算信号沿蓝色线段传播所需的时间。