QOJ.ac

QOJ

Time Limit: 1.0 s Memory Limit: 256 MB Total points: 100

#18448. 加速度计校准

Statistics

现代智能设备可以作为 GPS 导航仪和计步器;它们可以判断用户是在步行、跑步、乘出租车还是坐公交车;它们可以自动重新调整屏幕上的图像方向,等等。为了实现所有这些以及许多其他功能,它们依赖于所谓的加速度计。最简单的单轴加速度计与一个方向相关联,该方向被称为其敏感轴(sensitivity axis);静止加速度计的读数可以用来计算其轴线与向下垂直方向(即重力向量)的偏角。如果设备上安装了多个单轴加速度计,则可以使用它们轴线的位置来定义整个设备的空间朝向。

一个完美的加速度计测量其敏感轴与重力方向之间夹角的余弦值。如果敏感轴指向下方,即沿着重力向量 $\vec{g}$,加速度计显示的值为 $1$;如果敏感轴指向上方,它显示的值为 $-1$。如果轴线与垂直方向倾斜一定角度,完美加速度计的读数等于单位重力向量 $\vec{g}$ 在该轴上的投影:

然而,微型加速度计的生产并非完全没有缺陷。传感器的缺陷会导致读数中出现以下误差:

  1. 加速度计敏感轴偏离正确方向(安装不良);
  2. 读数的比例变化,即所有读数按共同比例放大或缩小;
  3. 所有读数整体偏移某个常数。

如果设备中安装了多个加速度计,上述误差在每个加速度计中的表现可能会有所不同。然而,如果我们检查加速度计在不同位置的一系列读数,会发现误差对该加速度计所有读数的影响是完全相同的。

为了弄清加速度计读数中误差的精确性质以便进行数字校正,需要对加速度计进行校准。校准的方法之一是收集设备在几个严格定义的位置下的读数,并为设备的每个加速度计计算上述缺陷的参数。然后,这些参数可用于计算设备在任意位置下的朝向。

在本题中,我们将研究一个装有两个刚性安装的加速度计的设备。当设备以标准方式在空间中定向时,其中一个加速度计必须沿 $X$ 轴向右,另一个必须沿 $Z$ 轴向上(与重力方向相反)。用户可以旋转设备:假设旋转只能在 $XZ$ 平面内进行。在这种情况下,设备的朝向完全由从标准朝向绕 $Y$ 轴逆时针旋转的角度决定(逆时针意味着从 $X$ 轴旋转到 $Z$ 轴)。

为了校准这样的加速度计,在设备旋转 $90^\circ$ 的倍数时获取加速度计的读数,这可以确定缺陷的所有参数。

根据提供的校准数据集,找出缺陷的参数,并找到一种根据加速度计读数计算设备真实位置的方法。

输入格式

输入的前四行分别包含设备旋转 $0$、$90$、$180$ 和 $270$ 度时加速度计的读数。

下一行包含一个整数 $T$ — 需要求解设备位置的读数数量($1 \le T \le 1\,000$)。接下来的 $T$ 行中,每行包含需要计算设备朝向的加速度计读数。

每个读数包含两个空格分隔的实数 — 分别是第一个加速度计(沿 $X$ 轴定向)和第二个加速度计(沿 $Z$ 轴定向)的读数。两个数字均给出小数点后 15 位。

保证输入文件中的读数是使用题面中描述的测量和误差模型获取的。读数中的误差不会太大:敏感轴偏离正确方向的角度绝不超过 $30^\circ$,读数的比例变化绝不会使读数改变超过两倍,且偏移量的绝对值绝不超过 $5$。

输出格式

输出 $T$ 个数,每行一个。每个数是对应加速度计读数下设备的旋转角度(以度为单位)。旋转角度必须在 $0^\circ$ 到 $360^\circ$(含)的范围内。每个答案的相对或绝对误差不能超过 $10^{-6}$。

样例

输入样例 1

0 -1
-1 0
0 1
1 0
5
-0.707106781186547 -0.707106781186547
-0.707106781186547 0.707106781186547
0.707106781186547 0.707106781186547
0.707106781186547 -0.707106781186547
-0.866025403784438 -0.5

输出样例 1

45
135.00
225
315
60

输入样例 2

-0.091012995433623 -0.946575228282571
-0.983288528313429 0.028440168472892
0.291012995433623 0.846575228282571
1.183288528313429 -0.128440168472892
5
-0.801067248717891 -0.628508848717885
-0.530934079986151 0.639439998807080
1.001067248717891 0.528508848717886
0.730934079986151 -0.739439998807080
-0.933661882864499 -0.430356435566630

输出样例 2

45.000000000000043
135.000000000000000
225.000000000000000
315.000000000000000
59.999999999999986

说明

在第一个样例中,加速度计没有缺陷。

在第二个样例中,所有三种误差成分都对两个加速度计产生了影响,且影响程度不同。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.