가속도계 교정
시간 제한1초메모리 제한256 MB
네 방향의 교정 측정값으로 각 가속도계의 사인 곡선 오차 모델을 구한 뒤, 두 측정값을 역산해 장치의 회전 각도를 계산합니다.
문제
현대의 스마트 기기는 GPS 내비게이터와 보행계로 쓰일 수 있고, 사용자가 걷는지, 뛰는지, 택시나 버스를 타는지 판별할 수 있으며, 화면의 영상을 자동으로 회전할 수도 있다. 이런 일과 그 밖의 많은 일을 하기 위해 스마트 기기는 가속도계에 의존한다. 가장 단순한 단일축 가속도계에는 감도축이라는 방향이 정해져 있다. 정지한 가속도계의 측정값으로 감도축이 아래쪽 수직 방향, 즉 중력 벡터에서 얼마나 벗어났는지 계산할 수 있다. 기기에 단일축 가속도계 여러 개를 장착하면 각 축의 위치로 기기 전체의 공간 방향을 결정할 수 있다.
이상적인 가속도계는 감도축과 중력 방향 사이 각도의 코사인을 측정한다. 감도축이 아래쪽, 즉 중력 벡터 를 따라 향하면 가속도계는 을 나타내고, 위쪽을 향하면 을 나타낸다. 축이 수직 방향과 각도를 이루도록 기울어져 있으면 이상적인 가속도계의 측정값은 중력 벡터 를 그 축에 투영한 값과 같다.

그러나 소형 가속도계의 생산이 완전히 결함 없이 이루어지지는 않는다. 센서의 결함은 다음과 같은 측정 오차를 만든다.
- 가속도계의 감도축이 올바른 방향에서 벗어나는 것(잘못된 장착)
- 측정값이 비례적으로 변하는 것, 즉 모든 측정값이 공통 계수에 따라 커지거나 작아지는 것
- 모든 측정값이 어떤 상수만큼 체계적으로 편이하는 것
기기에 가속도계가 여러 개 설치되어 있으면 위에서 설명한 오차가 가속도계마다 다르게 나타날 수 있다. 그러나 한 가속도계의 측정값을 서로 다른 여러 자세에서 살펴보면, 오차가 그 가속도계의 모든 측정값에 동일하게 영향을 준다.
가속도계 측정값에 나타난 오차의 정확한 성질을 알아내어 디지털 방식으로 보정하기 위해 가속도계를 교정한다. 교정 방법 중 하나는 기기를 몇 가지 엄격히 정해진 자세로 두고 측정값을 모은 뒤, 기기의 각 가속도계에 대해 위에서 설명한 결함의 매개변수를 계산하는 것이다. 그런 다음 이 매개변수를 적용해 임의 자세에서 기기의 방향을 계산할 수 있다.
이 문제에서는 두 가속도계가 단단히 장착된 기기를 다룬다. 기기가 공간에서 표준 자세로 놓일 때, 한 가속도계는 축을 따라 오른쪽을 향하고 다른 하나는 중력 반대 방향인 축을 따라 위쪽을 향해야 한다. 사용자는 기기를 회전할 수 있는데, 회전은 평면에서만 가능하다고 가정한다. 이때 기기의 방향은 표준 자세에서 축을 중심으로 반시계 방향으로 회전한 각도로 완전히 정해진다(반시계 방향은 축에서 축으로 가는 방향이다).


이런 가속도계를 교정하려면 기기를 90의 배수인 각도만큼 회전한 상태에서 측정값을 얻으며, 이로써 결함의 모든 매개변수를 정할 수 있다.
주어진 교정 데이터셋을 바탕으로 결함의 매개변수를 구하고, 가속도계 측정값으로 기기의 실제 자세를 계산하는 방법을 찾아라.
입력
입력 파일의 처음 네 줄에는 기기를 각각 , , , 회전했을 때의 가속도계 측정값이 주어진다.
다음 줄에는 정수 가 주어진다. 는 기기의 자세를 구해야 하는 측정값의 개수이다(). 남은 개의 각 줄에는 방향을 계산해야 하는 기기 자세에 대한 가속도계 측정값이 있다.
각 측정값은 공백으로 구분된 두 실수로 이루어지며, 각각 축을 따라 놓인 첫 번째 가속도계와 축을 따라 놓인 두 번째 가속도계의 측정값이다. 두 수는 모두 소수점 아래 15자리까지 주어진다.
입력 파일의 측정값은 문제에 설명된 측정 및 오차 모델을 사용해 얻어진 것이 보장된다. 측정 오차는 너무 크지 않다. 감도축이 올바른 방향에서 벗어나는 각도는 보다 크지 않고, 비례 변화로 측정값이 두 배를 넘게 바뀌지 않으며, 편이량의 절댓값은 보다 크지 않다.
출력
출력 파일에는 개의 수를 한 줄에 하나씩 출력한다. 각 수는 해당 가속도계 측정값에 대한 기기의 회전 각도(도)이다. 회전 각도는 이상 이하이어야 한다. 각 답의 상대 오차 또는 절대 오차는 을 넘지 않아야 한다.
힌트
첫 번째 예제에서는 가속도계에 결함이 없다. 두 번째 예제에서는 세 가지 오차 성분이 모두 두 가속도계 각각에 서로 다른 정도로 영향을 준다.