푸시-투 망원경
시간 제한1초메모리 제한128 MB
두 기준별의 설정값으로 회전 적도 좌표계 변환을 구한 뒤, 카탈로그 별들의 방위각과 고도를 계산해 출력하거나 NOT VISIBLE을 인쇄한다.
문제
푸시-투 망원경은 한 번 설정되고 나면, 내장 목록에 있는 별을 보기 위해 망원경을 어느 방향으로 향해야 하는지 방위각(azimuth, 망원경의 기준 평면에서 반시계 방향으로 잰 각)과 고도(elevation, 기준 평면 위로 잰 각)로 알려 준다.
설정은 다음과 같이 이루어진다. 먼저 이미 알고 있는 별 하나에 망원경을 향한 뒤, 그 별을 목록에서 찾아 선택한다. 이어서 첫 번째 별과 너무 가깝지 않은 두 번째 알려진 별에 대해 같은 과정을 반복한다.
목록에 있는 별의 방향은 지심 적도 좌표계(geocentric equatorial coordinates)로 주어진다. 원점은 지구의 중심이고, 양의 축은 북극을 지나며, 평면은 적도를 담는다. 축은 춘분점(태양이 적도면에 있는 때)에서 태양을 향한다. 별의 좌표는 적경 (평면에서 축으로부터 반시계 방향으로 잰 각, 단위 도)와 적위 (평면 위(양) 또는 아래(음)로 잰 각)로 주어진다.
이 좌표계에서 지구는 초당 라디안의 각속도로 자전한다. (지구가 태양 주위를 돌기 때문에, 같은 지점 위로 태양이 다시 오게 하려면 보다 조금 더 돌아야 한다.)
설정 중 별을 선택하면, 시스템은 시스템이 켜진 뒤 흐른 시각(초), 그 별을 향했을 때 망원경의 방위각과 고도, 그리고 목록에서 그 별의 번호를 기록한다. 알려진 별을 두 번 선택하고 나면, 시스템은 지심 적도 좌표에서 국소(망원경) 좌표로 가는 변환을 계산한다. 이후 관측할 별을 선택하면, 시스템은 그 별의 지심 적도 좌표와 현재 시각을 이용해 향해야 할 방위각과 고도를 계산한다.
푸시-투 망원경을 구현하는 프로그램을 작성하라.
망원경 좌표계가 지구와 함께 회전하므로, 별의 좌표에는 회전하는 지심 적도 좌표계를 쓰는 것이 편리하다. 이 좌표계는 시스템이 켜지는 순간 지심 적도 좌표계와 일치하고, 그 뒤로는 지구와 함께 회전한다. 이 좌표계에서 적위 는 그대로이지만, 적경은 시간에 따라 변한다.
여기서 는 회전 좌표계에서의 적경(라디안), 는 지심 적도 좌표계에서의 적경(라디안), 는 시스템이 켜진 뒤 흐른 시간(초), 는 위에서 정의한 지구 자전 각속도이다.
입력
첫 줄에는 공백으로 구분된 두 정수가 주어진다. 첫 번째 정수는 목록에 있는 별의 수 ()이고, 두 번째 정수는 데이터 집합의 수 ()이다.
다음 개의 줄은 별 목록이다. 각 줄에는 공백으로 구분된 두 실수, 적경 와 적위 가 도 단위로 주어진다. 별 목록은 하나뿐이며 모든 데이터 집합에 공통으로 사용된다. 각 데이터 집합은 이 목록을 이용해 서로 독립적으로, 동일한 방식으로 처리된다.
별 목록 다음에는 개의 데이터 집합이 이어진다. 각 데이터 집합은 여러 줄로 이루어진다. 데이터 집합의 첫 줄에는 찾을 별의 수 ()가 하나의 정수로 주어진다.
이어지는 두 줄은 그 데이터 집합의 설정 정보이다. 각 설정 줄에는 두 정수와 두 실수가 주어진다. 두 정수는 시스템이 켜진 뒤 흐른 시각 (초)와 목록에서 그 알려진 별의 번호 이다. 두 실수는 망원경 좌표에서 그 별의 방위각과 고도(도)이다.
데이터 집합의 남은 개의 줄은 사용자가 관측하려는 별을 나타낸다. 각 줄에는 공백으로 구분된 두 정수가 주어진다. 첫 번째는 시스템이 켜진 뒤 흐른 시각(초)이고, 두 번째는 목록에서 관측할 별의 번호이다.
별의 번호는 부터 시작한다.
출력
각 데이터 집합마다 여러 줄을 출력한다. 관측하려는 각 별에 대해 한 줄씩 출력한다. 계산된 고도가 보다 작으면(별이 지평선 아래에 있으면) 그 줄에는 따옴표 없이 NOT VISIBLE을 출력한다. 그렇지 않으면 향해야 할 방위각과 고도를 도 단위로 소수점 아래 한 자리까지 출력한다. 방위각은 범위로 정규화하여 출력한다.