Форум программистов, компьютерный форум, киберфорум
Геометрия
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
 Аватар для Garpedonapt
162 / 7 / 0
Регистрация: 13.04.2026
Сообщений: 32

Найти кратчайший маршрут между двумя маяками

05.06.2026, 22:26. Показов 4905. Ответов 47
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Представьте, что вы картограф, которому поручено нанести на карту кратчайший маршрут между двумя маяками М и N, расположенными на поверхности планеты в системе тау Кита. Планета необычная - в форме конуса (прямого и усеченного). Она имеет определенные размеры, которые указаны на рисунке. Маяки расположены на расстоянии MN по прямой лини (не по поверхности) и на разном удалении от края нижнего основания.
Как, используя только информацию о форме планеты и расположении маяков, вы сможете проложить самый короткий путь между ними и вычислить его длину, который не будет пролегать сквозь саму "толщу" планеты, а только по ее внешней стороне?
Миниатюры
Найти кратчайший маршрут между двумя маяками  
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.06.2026, 22:26
Ответы с готовыми решениями:

Определить кратчайший маршрут в графе, используя алгоритм Дейкстры.
Разработать и реализовать в виде программы алгоритм Дейкстры для графа заданного матрицей весовых...

Найти кратчайший путь между двумя точками (все не так просто)
Добрый день. Кратчайшее расстояние между двумя точками - это прямая. Но это лишь если не заданы...

С алгоритмом Дейкстра найти кратчайший путь в графе между парой вершин
С помощью алгоритма Дейкстра найти кратчайший путь в графе между парой вершин V0 и V* .

47
90 / 73 / 28
Регистрация: 07.12.2024
Сообщений: 142
24.06.2026, 20:44
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Nacuott Посмотреть сообщение
kitonum, мне непонятно, что записано в вашем коде для 2d случая.
Не могли бы Вы напмсать выражение для длины пути по хорде верхнего основания планеты., которое входит в выражение для фунуции суммарного расстояния всего пути.
Напишите подробнее - что именно непонятно (укажите номера строк кода).
Длина пути по хорде верхнего основания имеет вид `dist1(P,Q)` = sqrt((4*cos(s)-4*cos(t))^2+(4*sin(s)-4*sin(t))^2), где P и Q задаются как функции от углов s и t в 2d, а далее ищем минимум функции 2 переменных с помощью команды Optimization:-Minimize из пакета Maple.
Я не стал искать параметрические уравнения всех этих линий (на конической поверхности они мало отличаются от прямых, т.к. идут очень круто (не как на Вашем рисунке), почти по образующим). Если кому интересно, то это несложно сделать, в коде для этого практически всё подготовлено.
0
23 / 23 / 2
Регистрация: 31.05.2026
Сообщений: 26
24.06.2026, 20:57
Цитата Сообщение от Li6-D Посмотреть сообщение
Garpedonapt, рисунок для прокладки геодезической через верхнее основание Вложение 1535654 (почему-то коряво вставился )


Уравнение для нахождения x (строка 18 кода): https://www.cyberforum.ru/cgi-bin/latex.cgi?x = \frac{{\frac{1}{2} \cdot \arccos \left( {\frac{l}{{l1}}x} \right) + \frac{1}{2} \cdot \arccos \left( {\frac{l}{{l2}}x} \right) \mp \gamma }}{{1 \mp \sin (\alpha )}}.

Знаки «-» в правой части соответствуют геодезической, проходящей через верхнее основание конуса, «+» - через нижнее (там нужно выбирать другие касательные к вспомогательной окружности).
1
1860 / 1050 / 194
Регистрация: 24.02.2013
Сообщений: 3,173
Записей в блоге: 12
25.06.2026, 08:03
kitonum, Вы писали - Длина пути по хорде верхнего основания имеет вид `dist1(P,Q)` = sqrt((4*cos(s)-4*cos(t))^2+(4*sin(s)-4*sin(t))^2), где P и Q задаются как функции от углов s и t в 2d,

Дело в том, что углы s и t на 2D развертке и 3D конусе различны .
В ваших обозначениях этого не видно. Если в общем (суммарном) выражении для функции длины пути
аргументы этой функции записаны одинаково (т.е. s и t) то это неправильно. Для геодезических в 2D
будут s и t , а вот для длины хорды на верхнем основании конуса в 3D s и t нужно умножить на известный
коэффициент перехода.
Я записывал функцию расстояния именно с учетом этого. Для движения по нижнему основанию
яполучил такие же результаты что и Вы и Li6-D.
Для верхнего основания столкнулся с проблемами при численном решении уравнения при
нахождения экстремума функции.
Дело в том, что графики в 3D фунуций расстояний у Вас и у меня различны .
У Вас четко виден минимум у меня же он размыт и при численном решении уравнения
этот минимум найти тяжело.
В моей функции расстояния при вриации углов t и s длина хорды может стать отрицательной
, что фактически не имеет смысла,но минимум функции растояния находится.
0
 Аватар для Garpedonapt
162 / 7 / 0
Регистрация: 13.04.2026
Сообщений: 32
25.06.2026, 13:20  [ТС]
Li6-D, ознакомился с предложенным Вами вариантом решения. Разобрался со схемой проложенного пути, тригонометрию отложил на досуг (идея уравнения изложена кратко, в чем то схожа с моим). Так как результат вычисления верный, то и там все ладно.
0
90 / 73 / 28
Регистрация: 07.12.2024
Сообщений: 142
25.06.2026, 19:51
Цитата Сообщение от Nacuott Посмотреть сообщение
kitonum, Вы писали - Длина пути по хорде верхнего основания имеет вид `dist1(P,Q)` = sqrt((4*cos(s)-4*cos(t))^2+(4*sin(s)-4*sin(t))^2), где P и Q задаются как функции от углов s и t в 2d,
Дело в том, что углы s и t на 2D развертке и 3D конусе различны .
В ваших обозначениях этого не видно. Если в общем (суммарном) выражении для функции длины пути
аргументы этой функции записаны одинаково (т.е. s и t) то это неправильно. Для геодезических в 2D
будут s и t , а вот для длины хорды на верхнем основании конуса в 3D s и t нужно умножить на известный
коэффициент перехода.
s и t - это углы в 3d. В коде указано что они означают. Для вычислений на развёртке используются углы s1=N2SP и t1=N2SQ, где S -вершина полного конуса. В коде записаны формулы, связывающие s1 и t1 с s и t.

PS. Я забыл поправить комментарии в коде. Вместо x=N2O1P и y=N2O1Q должно быть s=N2O1P и t=N2O1Q.
0
1860 / 1050 / 194
Регистрация: 24.02.2013
Сообщений: 3,173
Записей в блоге: 12
26.06.2026, 00:33
Цитата Сообщение от kitonum Посмотреть сообщение
s и t - это углы в 3d.
Но расстояния меду точками в 3D не равны длинам геодезических на развертке конуса в 2D
Если бы Вы использовали уравнения геодезическиз линий в 3D (их длины) тогда -да.
Но ведь Вы уравнения геоднзических в 3D не использовали ....
0
23 / 23 / 2
Регистрация: 31.05.2026
Сообщений: 26
26.06.2026, 23:03
Garpedonapt, поясню геометрию с тригонометрией подробнее.

Вспомогательная окружность cx на чертеже даёт https://www.cyberforum.ru/cgi-bin/latex.cgi?{r_x} = \left| {PO} \right| \cdot \cos \widehat {PO{M_x}} = \left| {MO} \right| \cdot \cos \widehat {MO{M_x}},
где https://www.cyberforum.ru/cgi-bin/latex.cgi?\left| {PO} \right| = l,\;\widehat {PO{M_x}} = x,\;\left| {MO} \right| = l2.

Поэтому https://www.cyberforum.ru/cgi-bin/latex.cgi?\widehat {MO{M_x}} = \arccos \left( {\frac{l}{{l2}}\cos x} \right),\;\widehat {MOP} = \widehat {MO{M_x}} - \widehat {PO{M_x}} = \arccos \left( {\frac{l}{{l2}}\cos x} \right) - x.

И аналогично для точек N, Q: https://www.cyberforum.ru/cgi-bin/latex.cgi?\widehat {NOQ} = \arccos \left( {\frac{l}{{l1}}\cos x} \right) - x.

Длина дуги на развертке боковой поверхности конуса и на основании https://www.cyberforum.ru/cgi-bin/latex.cgi?\overset{\frown}{PQ} = 2\theta l = 2xr\; \Rightarrow \;\theta  = x \cdot \sin \left( \alpha  \right).

Из чертежа https://www.cyberforum.ru/cgi-bin/latex.cgi?2\theta  = 2\gamma  - \widehat {MOP} - \widehat {NOQ}.

После подстановки найденных выражений углов получим уравнение https://www.cyberforum.ru/cgi-bin/latex.cgi?x = \frac{{\frac{1}{2} \cdot \arccos \left( {\frac{l}{{l1}}\cos x} \right) + \frac{1}{2} \cdot \arccos \left( {\frac{l}{{l2}}\cos x} \right) - \gamma }}{{1 - \sin (\alpha )}}.

Если геодезическая проходит через нижнее основание, то формула такая https://www.cyberforum.ru/cgi-bin/latex.cgi?x = \frac{{\frac{1}{2} \cdot \arccos \left( {\frac{l}{{l1}}\cos x} \right) + \frac{1}{2} \cdot \arccos \left( {\frac{l}{{l2}}\cos x} \right) + \gamma }}{{1 + \sin (\alpha )}}.

Причём здесь l - длина образующей конуса до нижнего основания.

P.S. Пока писал, заметил ошибку в уравнении в своем ответе выше (#42)– в правой части уравнения перед «x» пропущен «cos».
2
 Аватар для Garpedonapt
162 / 7 / 0
Регистрация: 13.04.2026
Сообщений: 32
27.06.2026, 15:24  [ТС]
Li6-D, признателен Вам за подробное геометрическое решение, теперь все понятно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.06.2026, 15:24

Граф-цикл. Найти кратчайший путь
Доброго времени суток господа. Имеется граф цикл с вершинами 0, 1, 2, 3, 4 -> 0, 1, 2, 3, 4... и...

Найти кратчайший путь обхода всех вершин графа
Доброго времени суток, форумчане! К сути самой задачи: имеется комната, по ней разбросаны синие и...

Найти кратчайший путь в орграфе
Надо, например, найти кратчайший путь, на отрезках указана длина. Как решать подобные задачи или...

Найти кратчайший путь с помощью алгоритма Дейкстры

Постройте не содержащий левых поворотов маршрут автомобиля кратчайшей длины
Как известно, наиболее сложно при управлении автомобилем (на дорогах с правосторонним движением)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
48
Ответ Создать тему
Новые блоги и статьи
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru