Старшие друзья андроида Васи уже давно занимаются моделированием шестимерных космическиих кораблей.
Сам Вася пока далек от такого мастерства — у него только-только начался курс 3d-моделирования.
И вот прямо сейчас он делает свое первое домашнее задание.
Задание довольно простое: нужно всего лишь построить 3d-чертеж произвольной детали.
Вася уже придумал, какую деталь он хочет нарисовать, представил, как она выглядит, и даже начертил первую прямую.
Но что-то пошло не так.
Получилась совсем не та прямая, которая была нужна.
Но Вася не унывает, у него уже есть решение этой проблемы.
Он планирует мысленно повернуть придуманную деталь так, чтобы прямая, которую он собирался начертить, перешла в имеющуюся прямую.
Помогите Васе понять, какой поворот для этого нужно сделать.
Исходные данные
В первых двух строках даны координаты точек A и B.
Эти точки лежат на начерченной прямой.
В третьей и четвертой строках даны координаты точек C и D.
Эти точки лежат на прямой, которую Вася собирался начертить.
Точка A не совпадает с точкой B, точка C не совпадает с точкой D.
Все числа на входе целые и не превосходят 1000 по модулю.
Результат
Если искомого поворота не существует, в единственной строке выведите «Impossible».
Иначе в первых двух строках выведите координаты точек P и Q, задающих ось поворота, а в третьей α — угол поворота в градусах.
Расстояние между P и Q не должно быть меньше 1.
Координаты точек P и Q по модулю не должны превосходить 2000.
Угол должен лежать в диапазоне [0; 360] и отсчитываться против часовой стрелки,
если смотреть из точки P в направлении точки Q.
Решение будет считаться верным, если при повороте прямой CD относительно PQ на угол α
она переходит в прямую EF, такую что расстояния от точек A и B до прямой EF не превосходит 10−5.
Примеры
исходные данные | результат |
---|
0 0 0
0 1 0
0 0 0
1 0 0
| 0 0 1
0 0 0
90
|
1 0 1
1 0 0
0 1 1
0 1 0
| 0 0 1
0 0 0
270
|
Автор задачи: Егор Щелконогов (идея — Дмитрий Иванков)
Источник задачи: XIX Открытый чемпионат Урала по спортивному программированию (апрель, 2015)