Задачі
Обертання навколо
Обертання навколо
Розглянемо стержень, який обертається за годинниковою стрілку, ніби палиця, яка крутиться, рухається по плоскій поверхні, оточеній стіною у вигляді многокутника (див. \textit{\textbf{Рисунок 1}}).
\includegraphics{https://static.e-olymp.com/content/ba/ba0ece2a623f0c77437cdf1314601a7cf85ae1c3.jpg}
\textit{\textbf{Рисунок 1}}. Стержень, який обертається в многокутнику
Спочатку один кінець стержня (назвемо його "\textbf{кінець A}") знаходиться у (\textbf{0}, \textbf{0}), а інший кінець (який назвемо "\textbf{кінець B}") у (\textbf{0}, \textbf{L}), де \textbf{L} - довжина стержня. Спочатку стержень дотикається стіни лише у точці \textbf{A}.
Стержень обертається, фіксуючи точку дотику як центр обертання. Центр змінюється, як тільки нова точка дотиоркнеться стіни.
Вам потрібно обчислити координати кінця \textbf{A}, коли стержень зробить \textbf{R }повних обертів.
\includegraphics{https://static.e-olymp.com/content/36/36fa20fba88ac68d38475da99a35a345a353d4bb.jpg}
\textit{\textbf{Рисунок 2}}. Приклати поворотів стержня
На \textit{\textbf{Рисунку 2}} показано декілька прикладів. У випадках (\textbf{D}) та (\textbf{E}) стержень застряне передчасно (не зоже далі обертатись за годинниковою стрілкою незалежно від того яку точку дотику вибрати у якості центру) до виконання \textbf{R} обертів. У таких випадках потрібно вивести координаты кінця \textbf{A} у цих (застрявших) позиціях.
Вважайте, що якщо довжина стержня \textbf{L} змінюється на \textbf{ε} (\textbf{|ε}| < \textbf{0.00001}), то координати (\textbf{x}, \textbf{y}) кінцевої точки не повинні змінитись більше ніж на \textbf{0.0005}.
\InputFile
Вхідні дані складаються з декількох тестів. Кількість тестів не більша \textbf{100}. У кінці вхідних даних знаходиться рядок "\textbf{0 0 0}".
Формат кожного тесту наступний:
\textbf{L R N}
\textbf{X_1 Y_1}
\textbf{X_2 Y_2}
\textbf{...}
\textbf{X_N Y_N}
\includegraphics{https://static.e-olymp.com/content/49/49270e28ebc371c9e6e548fe5edf6353526f0ecb.jpg}
\textbf{L} - довжина стержня. Стержень обертається на \textbf{2R} радіан (якщо не застрянет передчасно). \textbf{N} - кількість вершин многокутника.
Вершини многокутника розміщені у порядку обходу проти годинникової стрілки. Вважайте, що многокутник простий, тобто його границя не перетинає і дотикається сама до себе.
\textbf{N}, \textbf{X_i} та \textbf{Y_i} - цілі числа; \textbf{R} та \textbf{L} - десяткові дроби. Їх границі наступні: \textbf{1.0 }≤ \textbf{L} ≤ \textbf{500.0}, \textbf{1.0 }≤ \textbf{R }≤ \textbf{10.0}, \textbf{3} ≤\textbf{N }≤ \textbf{100}, \textbf{-1000 }≤ \textbf{X_i} ≤ \textbf{1000}, \textbf{-1000} ≤ \textbf{Y_i} ≤ \textbf{1000}, \textbf{X_1} ≤ \textbf{-1}, \textbf{Y_1} = \textbf{0}, \textbf{X_2} ≥ \textbf{1}, \textbf{Y_2 = 0}.
\OutputFile
Для кожного тесту у одному рядку вивести \textbf{x}- та \textbf{y}- координати кінцевого положення кінця \textbf{A}, відокремлюючи їх пропуском. Значення можуть містити похибку не більшу \textbf{0.001}. Після десяткової крапки можна виводити довільну кількість знаків.
Наведені приклади відносяться до випадків на \textit{\textbf{Рисунку 2}}. Для зручності на \textit{\textbf{Рисунку 3}} показана анімація та фотографічне відтворення випадку (\textbf{C}).
\includegraphics{https://static.e-olymp.com/content/7b/7b13b2e55ad078ef0bf7a0d5d7037554d9381312.gif}
\includegraphics{https://static.e-olymp.com/content/1e/1e244d4685cf610b1ebf501717ded1cb8a1f0ddc.jpg}
\textit{\textbf{Рисунок 3}}. Анімація та фотографічне відтворення випадку (\textbf{C})
Вхідні дані #1
4.0 2.0 8 -1 0 5 0 5 -2 7 -2 7 0 18 0 18 6 -1 6 4.0 2.0 4 -1 0 10 0 10 12 -1 12 4.0 1.0 7 -1 0 2 0 -1 -3 -1 -8 6 -8 6 6 -1 6 4.0 2.0 6 -1 0 10 0 10 3 7 3 7 5 -1 5 5.0 2.0 6 -1 0 2 0 2 -4 6 -4 6 6 -1 6 6.0 1.0 8 -1 0 8 0 7 2 9 2 8 4 11 4 11 12 -1 12 0 0 0
Вихідні дані #1
16.0 0.0 9.999999999999998 7.4641016151377535 0.585786437626906 -5.414213562373095 8.0 0.0 6.0 0.0 9.52786404500042 4.0