:на поверхности прямоугольного параллелепипеда сидит муха и нанесена капля варенья. определите наименьшее расстояние, которое должна проползти муха по поверхности параллелепипеда, чтобы доползти до капли. входные данные: первые три строки входных данных содержат положительные числа 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?
Можно развернуть куб, центром "развертки" делаем грань где сидит муха, если муха и варенье на одной грани достачно просто, путь прямая, Зелным цветом залита одна и таже грань отмечено 4 возможных пути один из которых, в зависимости от размеров куба и координат мухи и варенья будет кратчайшим. Кратчайший путь для ситуации на рисунке - зеленый пунктир.
Да если достроить до треугольника (черный пунктир катеты d и f), искомый путь гипотенуза. Её длина
Значит вся "хитрость" в том, чтобы правильно "собрать" длины катетов.
Если успею обобщить и облечь все в формулы (код) (логические выражения), добавлю. И уточню рисунки. Если нет, может кто-то догадается. Или в крайнем случае отошлют на доработку мне или Allangarsk.
Возможно, что в случае расположения на противоположных гранях, придется просчитывать все пути кандидаты и выбирать из них наименьший.
В случае на расположения на одной грани (X1=X2)OR(Y1=Y2)OR(Z1=Z2) кратчайший путь очевиден. Если, допустим Z1=Z2, то
d=(X1-X2), f=(Y1-Y2).