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.