QOJ.ac

QOJ

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

#20003. Преобразование вращения

Statistics

Простое движение, снова и снова…

t.A.T.u., «A Simple Motion»

Julia очень любит простые движения, особенно в трёхмерном пространстве! Недавно она нашла матрицу, соответствующую некоторому повороту вокруг оси, проходящей через начало координат.

Матрица поворота $A$ переводит точку $\begin{pmatrix}x\\y\\z\end{pmatrix}$ в $\begin{pmatrix}x'\\y'\\z'\end{pmatrix}$ следующим образом:

$$ \begin{pmatrix}x'\\y'\\z'\end{pmatrix}= \begin{pmatrix}A_{11}&A_{12}&A_{13}\\A_{21}&A_{22}&A_{23}\\A_{31}&A_{32}&A_{33}\end{pmatrix} \times\begin{pmatrix}x\\y\\z\end{pmatrix}. $$

Поворот также можно описать геометрически с помощью единичного (то есть имеющего длину $1$) вектора $v=\begin{pmatrix}v_x\\v_y\\v_z\end{pmatrix}$, вокруг которого происходит вращение, и угла поворота $\alpha$. Предположим, что вы смотрите на начало координат из конца вектора $v$. Тогда, если вращение происходит против часовой стрелки, угол $\alpha$ положителен, иначе он отрицателен.

Julia хочет геометрически выразить поворот, заданный матрицей. К сожалению, Julia не знает значений $v$ и $\alpha$, поэтому она попросила вас найти их, чтобы она могла продолжить своё простое движение.

Входные данные

Дана матрица $A$: три строки, в каждой из которых по три вещественных числа. Каждое число содержит не более $20$ цифр после десятичной точки. Гарантируется, что существуют такие $v$ и $\alpha$, что $1\le|\alpha|\le179$, и при этом элементы матрицы $A'$, соответствующей повороту вокруг вектора $v$ на угол $\alpha$, отличаются от соответствующих элементов $A$ не более чем на $10^{-13}$.

Выходные данные

В первой строке выведите угол $\alpha$ в градусах. Во второй строке выведите координаты единичного вектора $v$. Выводите все числа как можно точнее. Ответ будет считаться верным, если разность между $A_{ij}$ и соответствующим элементом матрицы, построенной по вашему углу и единичному вектору, не превышает $10^{-6}$.

Примеры

Входные данные 1

0 -1 0
1 0 0
0 0 1

Выходные данные 1

90
0 0 1

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.