e-olymp 1501. Конусное расстояние

Задача

Конус расположен в трехмерном пространстве так, что его основание радиуса [latex] r [/latex] лежит в плоскости [latex] z = 0 [/latex] с центром в [latex] (0,0,0) [/latex]. Вершина конуса расположена в [latex] (0, 0, h) [/latex]. На его поверхности заданы две точки в конусных координатах. Конусной координатой точки называется пара чисел [latex] (d, A) [/latex], где [latex] d [/latex] — расстояние от вершины конуса до точки [latex] p [/latex], а [latex] A (A < 360) [/latex] — угол в градусах между плоскостью [latex] y = 0 [/latex] и плоскостью, проходящей через точки [latex] (0,0,0), (0,0,h) [/latex] и [latex] p [/latex], считая против часовой стрелки от направления оси [latex] x [/latex].

На поверхности конуса заданы две точки [latex] p1 = (d1, A1) [/latex] и [latex] p2 = (d2, A2) [/latex]. Найти кратчайшее расстояние между [latex] p1 [/latex] и [latex] p2 [/latex], измеряемое по поверхности конуса.

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

Каждая строка является отдельным тестом и содержит 6 действительных чисел: [latex] r, h, d1, A1, d2 [/latex] и [latex] A2 [/latex].

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

Для каждого теста в отдельной строке вывести кратчайшее расстояние между точками [latex] p1 [/latex] и [latex] p2 [/latex] по поверхности конуса. Расстояние выводить с 2 десятичными знаками.

Тесты

Ввод Вывод
 1

 3.0 4.0 2.0 0.0 4.0 0.0

 2.00

 2

 3.0 4.0 2.0 90.0 4.0 0.0

 3.26
 3

 6.0 8.0 2.14 75.2 9.58 114.3

 7.66
 4

 3.0 4.0 5.0 0.0 5.0 90.0

 4.54

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

Решение задачи

Инициализирую все нужные переменные и через поток ввода считываю все исходные данные. Затем нахожу образующую l по теореме Пифагора и угол между плоскостями — alpha . k1 это часть, которую занимает угол alpha от основания конуса. k2 — коэффициент пропорциональности между окружностями радиусами r и l . fi — величина угла развертки конуса, а beta — угол между прямыми на которых лежат точки, данные в условии. Далее находим искомое расстояние по теореме косинусов.

Ссылки

2 thoughts on “e-olymp 1501. Конусное расстояние

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