Телескоп Push-To
Как только Push-To Телескоп настроен, он указывает, куда направить телескоп, чтобы увидеть звезду из встроенного каталога, предоставляя азимут (угол против часовой стрелки в базовой плоскости телескопа) и высоту (угол над базовой плоскостью телескопа). Телескоп инициализируется путем наведения его на известную звезду, поиска звезды в каталоге и выбора её. Этот шаг повторяется со второй известной звездой, которая не слишком близка к первой.
Направление звезд в каталоге дано в геоцентрических экваториальных координатах. Начало координат находится в центре Земли. Положительная z-ось проходит через Северный полюс, а xy-плоскость содержит экватор. x-ось указывает на Солнце в момент весеннего равноденствия (когда Солнце находится в экваториальной плоскости). Координаты звезды — это прямое восхождение, α, (угол в xy-плоскости против часовой стрелки от x-оси в градусах) и склонение, δ, (угол выше (положительный) или ниже (отрицательный) xy-плоскости).
В этой системе координат Земля вращается со скоростью (2) (1.0027379093)/86400 радиан в секунду. (Поскольку Земля движется вокруг Солнца, она должна вращаться более чем на 360 градусов, чтобы Солнце оказалось над той же точкой.)
Во время настройки, когда вы выбираете звезду, система записывает время (в секундах с момента включения системы), азимут и высоту телескопа при наведении на звезду и индекс звезды в таблице. После двух выборов известных звезд система вычисляет преобразование из геоцентрических экваториальных координат в локальные координаты. Впоследствии, когда вы выбираете звезду для наблюдения, система использует геоцентрические экваториальные координаты звезды и текущее время, чтобы вычислить азимут и высоту для наведения на звезду.
Напишите программу для реализации Push-To Телескопа.
Поскольку система координат телескопа вращается вместе с Землей, может быть полезно использовать вращающуюся систему геоцентрических экваториальных координат для координат звезд. Эта система совпадает с геоцентрическими экваториальными координатами, когда система включается, и вращается вместе с Землей после этого. В этой системе склонение, δ, остается тем же, но угол прямого восхождения изменяется со временем:
α_rot = α - t * rotation_rate
где α_rot — это угол прямого восхождения в вращающейся системе (в радианах), α — это угол прямого восхождения в геоцентрических экваториальных координатах (в радианах), t — это время в секундах с момента включения системы, а rotation_rate — это скорость вращения Земли, указанная выше.
Входные данные
Первая строка входных данных содержит два десятичных целых числа, разделенных одним пробелом. Первое число указывает количество, S, звезд в каталоге (0 < S ≤ 100), а второе указывает количество P наборов данных (0 < P < 100).
Следующие S строк входных данных составляют таблицу звезд. Каждая строка таблицы звезд состоит из десятичного целого числа и двух чисел с плавающей запятой, разделенных пробелами. Целое число — это индекс звезды, а числа с плавающей запятой — это прямое восхождение (α) и склонение (δ) в градусах. Существует одна таблица звезд, и она используется для всех наборов данных. Каждый набор данных должен обрабатываться одинаково и независимо с использованием таблицы звезд.
P наборов данных задачи следуют за данными таблицы звезд. Каждый набор данных состоит из нескольких строк. Первая строка каждого набора данных состоит из двух десятичных целых чисел, разделенных одним пробелом. Первое число — это номер экземпляра задачи N. Второе число — это количество звезд, которые нужно найти T, (T ≤ 10) для набора данных.
Следующие две строки указывают данные настройки для набора данных. Каждая строка настройки состоит из двух целых чисел, за которыми следуют два числа с плавающей запятой. Целые числа — это t, количество секунд с момента запуска системы, и I, индекс известной звезды настройки в таблице. Числа с плавающей запятой — это азимут и высота звезды в градусах (в координатах телескопа).
Оставшиеся T строк входных данных в наборе данных указывают звезду, которую пользователь хочет наблюдать. Каждая строка входных данных состоит из трех целых чисел, разделенных пробелами. Первое число — это номер звезды для наблюдения (номер подзадачи), второе — это время (в секундах) с момента запуска системы, а последнее — это индекс звезды для наблюдения в таблице звезд.
Выходные данные
Для каждого набора данных существует несколько строк вывода. Первая строка вывода содержит номер набора данных, за которым следует один пробел и количество звезд, которые пользователь хотел наблюдать (T). Для каждой звезды, которую нужно было наблюдать, существует одна строка вывода. Если вычисленная высота меньше нуля (звезда находится ниже горизонта), строка состоит из номера звезды (подзадачи), за которым следует пробел и строка "NOT VISIBLE" (без кавычек). В противном случае строка состоит из наблюдаемой звезды (номера подзадачи), за которой следуют азимут и высота в градусах с точностью до одной десятичной.