Задача: На поверхности прямоугольного параллелепипеда сидит муха и нанесена капля варенья. Определите наименьшее расстояние, которое должна проползти муха по поверхности параллелепипеда, чтобы доползти до капли. Входные данные:...

Задача: На поверхности прямоугольного параллелепипеда сидит муха и нанесена капля варенья. Определите наименьшее расстояние, которое должна проползти муха по поверхности параллелепипеда, чтобы доползти до капли. Входные данные: Первые три строки входных данных содержат положительные числа K, L, M, являющиеся размерами параллелепипеда вдоль осей OX, OY, OZ. Один угол параллелепипеда находится в начале координат, противоположный – в точке (K;L;M), ребра параллелепипеда параллельны осям координат. Следующие три строки входных данных содержат координаты мухи X1, Y1, Z1, затем идут три строки с координатами варенья X2, Y2, Z2. Задаваемые этими координатами точки находятся на поверхности параллелепипеда. Все числа во входных данных целые, не превосходящие 1000. Выходные данные: Программа должна вывести единственное число – кратчайшее расстояние, которое должна проползти муха по поверхности параллелепипеда, чтобы добраться до варенья. Ответ необходимо вывести в виде действительного числа, проверка будет осуществляться с точностью 10-3. Пример Вход Выход 1 2.236067977 1 1 0 0 0 1 1 1 Вход Выход 12 13 5 2 1 0 1 12 4 1 Написал "каркас" программы без уравнения, которое решает задачу: Program rast; var K, L, M, X1, Y1, Z1, X2, Y2, Z2, R : real; begin writeln('Введите 3 положительных числа K, L, M, являющиеся размерами параллелепипеда вдоль осей OX, OY, OZ'); readln(K, L, M); writeln('Введите координаты мухи X1, Y1, Z1'); readln(X1, Y1, Z1); writeln('Введите координаты варенья X2, Y2, Z2'); readln(X2, Y2, Z2); R:=; writeln(R); end. Какое уравнение должно вычислять R? Помогите пожалуйста
Гость
Ответ(ы) на вопрос:
Гость
Баллы не ставте. ДОБАВЛЯЮ РЕШЕНИЕ, БОЮСЬ НЕ УСПЕТЬ оформить. Но там, если что, вроде обещали вторую попытку редакции. Тогда и программу можно будет добавить Думаю ход рассуждений уже можно понять. Если точки расположены на смежных гранях, формулы получаются похожими ,(а может и такими же), что рассматривались товарищем Allangarsk  Если на противоположных гранях, то надо еще добавить (оформить). Идея то есть.  В общем все многообразие вариантов можно будет втиснуть в 7 групп "формул". Можно развернуть куб, центром "развертки" делаем грань где сидит муха, если муха и варенье на одной грани достачно просто, путь прямая, Зелным цветом залита одна и таже грань отмечено 4 возможных пути один из которых, в зависимости от размеров куба и координат мухи и варенья будет кратчайшим. Кратчайший путь для ситуации на рисунке -  зеленый пунктир. Да если достроить до треугольника (черный пунктир катеты d и f), искомый путь гипотенуза. Её длина [latex]l= \sqrt{d^2+f^2} [/latex] Значит вся "хитрость" в том, чтобы правильно "собрать" длины катетов. Если успею обобщить и облечь все в формулы (код) (логические выражения), добавлю. И уточню рисунки. Если нет, может кто-то догадается. Или в крайнем случае отошлют на доработку мне или Allangarsk. Возможно, что в случае расположения на противоположных гранях, придется просчитывать все пути кандидаты и выбирать из них наименьший.  В случае на расположения на одной грани (X1=X2)OR(Y1=Y2)OR(Z1=Z2) кратчайший путь очевиден. Если, допустим Z1=Z2, то [latex]l= \sqrt{(X1-X2)^2+(Y1-Y2^2)} [/latex] d=(X1-X2), f=(Y1-Y2).
Не нашли ответ?
Ответить на вопрос
Похожие вопросы