e-olymp 9104. Плоская земля

Условие

Система образования Вас снова подвела — Ваше предложение о включении модели «Плоская Земля» в программу старшей школы было отклонено в шестой раз подряд. Коррумпированные ученые Круглой Земли отказываются прислушиваться к Вашим аргументам и игнорируют кучу данных, подтверждающих Ваши заявления.

Настало время урегулировать этот конфликт раз и навсегда. Вы путешествовали по всему земному шару и встречались с ведущими учеными Плоской Земли. Вместе Вы разработали блестящий план.

Ради противоречия предположим, что Земля — это сфера в трехмерном пространстве. Тогда, если предположить, что небо является бесконечной плоскостью в пространстве, такая Земля явно бросит на него тень! Эта тень была бы ортогональной проекцией Земли на небо. Поскольку в действительности на небе нет видимой тени, мы достигаем противоречия.

Осталось только выполнить расчеты. По заданным центру и радиусу Земли, а также уравнению небесной плоскости в виде [latex]ax + by + cz + d = 0[/latex] необходимо определить площадь ортогональной проекции Земли на небо. Обратите внимание, что в некоторых Ваших экспериментах Земля может пересекать небо — Вы не хотели бы вводить слишком много ненужных предположений, не так ли?

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

Первая строка содержит количество тестов [latex]n[/latex] [latex]\left(1\leqslant n\leqslant 10\right)[/latex]. Далее следует описание тестов.

Каждый тест описывается строкой, содержащей восемь целых чисел [latex] x, y, z, r, a, b, c, d [/latex]. Они обозначают координаты центра Земли, его радиус и уравнение неба соответственно. Все числа от [latex]1[/latex] до [latex]1000[/latex] включительно.

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

Для каждого теста выведите одно число: площадь проекции с не менее [latex]6[/latex] десятичными цифрами.

Тесты

Входные данные Выходные данные
1 1
2 3 5 7 1 2 4 8
153.938040026
2 2
2 3 5 7 1 2 4 8
4 5 3 9 2 6 8 10
153.938040026
254.469004941
3 3
2 3 5 7 1 2 4 8
4 5 3 9 2 6 8 10
23 45 87 8 100 200 65 89
153.938040026
254.469004941
201.06192983

Код программы

Решение

Для начала, определимся, чего от нас хотят авторы задачи.  По сути, самой важной частью условия является третий абзац, из которого мы узнаем, что Земля — сфера, а также, что ортогональная проекция Земли на небо — это тень от Земли на небесную плоскость. Но, если существует тень, значит существует и светило (Солнце). Для того, что бы стало более понятно, проведём эксперимент. Представим, что Земля — это, к примеру, сфера, Солнце — это настольная лампа (Важно! Лампа будет давать параллельный пучок лучей), а небесная плоскость — это обычный лист бумаги. (Важно! В данном эксперименте размеры светила и размеры «Земли» будут совпадать). При направлении света на сферу, на лист бумаги будет отбрасываться тень (площадь которой нам и надо найти). Итак, как мы видим на рисунке, площадь проекции — это ничто иное, как площадь сечения сферы, проходящее по центральной оси этой сферы. А площадь сечения сферы по центральной оси — это площадь круга, которая вычисляется по формуле [latex]S=\pi r^2[/latex]. Таким образом, что бы рассчитать площадь проекции, из всех входящих данных нам понадобится только радиус Земли. Что бы у нас было число [latex]\pi[/latex], мы подключаем библиотеку cmath. Чтобы вывести число с [latex]6[/latex] десятичными знаками после запятой, подключаем библиотеку iomanip .

Related Images:

4 thoughts on “e-olymp 9104. Плоская земля

    • Не очень понял почему вместо ссылки на свое решение задачи, Вы сделали ссылку на решение задачи Мацалышенко. Совпадение?
    • В задаче мы должны использовать ортогональную проекцию при которой лучи «светила» параллельны друг другу и ортогональны плоскости. В Вашей образе с апельсином и лампой размером с апельсин мы не получим параллельный пучок лучей. Разве что лампа-прожектор имеет параболический отражатель, а источник света точечный и расположен в фокусе параболоида вращения. Обычная настольная лампа дает конус рассеянного света при котором тень будет больше апельсина и сильно размыта. Чтобы не отказываться от такого хорошего рисунка можно написать, «представим, что лампа дает параллельный пучок лучей». Или сделать другую оговорку такого же рода.
    • По поводу картинки. Я говорил, что чертежи следует выполнять в формате векторной графики (SVG) и при этом не пользоваться графическим редактором, а кодировать их в текстовом редакторе вручную. И тут же уточнял — речь идет о чертежах, а не о фотографиях и других растровых изображениях. Конечно, векторные форматы позволяют вставить в чертёж закодированную в шестнадцатеричном формате небольшую растровую картинку. У Вас другая ситуация — весь рисунок растровый. Вы просто запихнули в формат SVG растровую картинку для которой лучшим являлся бы формат GIF или JPEG. Это бессмысленная и даже вредная работа.
    • Большое спасибо, вроде всё подправил

Добавить комментарий