|
1045 / 313 / 78
Регистрация: 16.03.2020
Сообщений: 954
|
|
Как найти расстояние между двумя отрезками?15.02.2023, 12:32. Показов 5061. Ответов 28
Метки нет (Все метки)
Известны координаты точек, ограничивающие два отрезка. Как найти расстояние между этими отрезками? Под расстоянием подразумевается минимальное расстояние между двумя точками, лежащими на отрезках.
Например, для отрезков (0, 0) (5, 5) и (7, 5) (10, 18) расстояние будет 2, а для отрезков (0, 0) (0, 3) и (-1, 6) (2, 3) расстояние равно корню из двух, тк отрезки будут находится на расстоянии диагонали условной клетки. Пробовал спросить у ChatGPT, но он выдал неверный ответ
0
|
|
| 15.02.2023, 12:32 | |
|
Ответы с готовыми решениями:
28
Кратчайшее расстояние между двумя отрезками на плоскости
|
|
Диссидент
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
|
|||
| 15.02.2023, 13:55 | |||
|
Записываем уравнение отрезков в параметрическом виде X1 = A1*t + B1*(1-t) 0<=t <= 1 X2 = A2*s + B2*(1-s) 0<=s <= 1 Это векторные уравнения. Их надо расписать покоординатно Записываем R = f(t, s) между точками X1 - X2 Можно брать не расстояние, а его квадрат. Здесь это без разницы И находить минимум функции f(t,s) в квадрате 0 <= t, s <= 1. Методами матанализа. Т.е. искать производные, их нулевые значения в области. затем анализировать на границах области и в вершинах квадрата. Возможно, для частных случаев есть какие-то готовые формулы. Но это самый общий метод. И подходит для любых фигур, как только для них удается найти хорошее параметрическое задание Добавлено через 8 минут Все это выглядит довольно сложным. Но при расчете для конкретных точек ничего страшного. Системки уравнений получаются линейные. Если речь идет о программировании, то все кодируются без особого труда
1
|
|||
|
11066 / 7367 / 3989
Регистрация: 14.01.2014
Сообщений: 16,799
|
|
| 15.02.2023, 14:10 | |
|
По сути дела всё это сводится к элементарной задаче нелинейного программирования с линейными ограничениями. Ничего сложного нет.
0
|
|
|
Модератор
5289 / 4071 / 1392
Регистрация: 30.07.2012
Сообщений: 12,487
|
|
| 15.02.2023, 14:23 | |
|
0
|
|
|
1045 / 313 / 78
Регистрация: 16.03.2020
Сообщений: 954
|
|||
| 15.02.2023, 14:36 [ТС] | |||
|
0
|
|||
|
11066 / 7367 / 3989
Регистрация: 14.01.2014
Сообщений: 16,799
|
|
| 15.02.2023, 14:36 | |
|
Вот так можно решить в Mathcad без помощи ChatGPT
1
|
|
|
1045 / 313 / 78
Регистрация: 16.03.2020
Сообщений: 954
|
||||||
| 15.02.2023, 14:40 [ТС] | ||||||
|
Немного поспорив и поизменяв формулировки я добился следующего:
Кликните здесь для просмотра всего текста
Да, формула, которую я привел в прошлом ответе, не учитывает случай перпендикулярных отрезков. Для таких отрезков можно использовать следующий алгоритм: Найти проекции начальной и конечной точек каждого отрезка на другой отрезок. Если обе проекции попадают на отрезок, то расстояние между отрезками равно расстоянию между проекциями. Если только одна проекция попадает на отрезок, то расстояние между отрезками равно расстоянию от этой проекции до другого отрезка. Если обе проекции не попадают на отрезок, то расстояние между отрезками равно расстоянию до ближайшей из двух конечных точек другого отрезка. Используя этот алгоритм, формула для расстояния между двумя отрезками может быть записана следующим образом: Вычислить вектора отрезков AB и CD и их длины. Если длины векторов равны нулю, то отрезки совпадают, поэтому расстояние равно нулю. Вычислить вектор AC. Вычислить скалярные произведения векторов AB и AC, и CD и AC. Если оба скалярных произведения меньше или равны нулю, то проекции точек A и B лежат на отрезке CD, поэтому расстояние равно расстоянию между отрезками AB и CD, которое можно найти как расстояние между точками A и проекцией точки A на отрезок CD (или между точками B и проекцией точки B на отрезок CD, которые дадут одинаковый результат). Если только одно скалярное произведение меньше или равно нулю, то одна проекция лежит на отрезке CD, а другая - за его пределами, поэтому расстояние равно расстоянию от проекции точки A или B на отрезок CD до отрезка AB. Если оба скалярных произведения больше нуля, то проекции точек A и B лежат за пределами отрезка CD, поэтому расстояние равно расстоянию до ближайшей из двух конечных точек отрезка CD. В результате получим следующую формулу для расстояния между двумя отрезками:
То есть вроде бы и ответ есть, но используются якобы имеющиеся функции point_to_point_distance и point_to_segment_distance. Не по теме: Интересно, что псевдокод он выдал практически полностью питоном. Вот она, пропаганда! Уже до нейросетей добралась. И язык ответа на вопрос по программированию по умолчанию в нем тоже питон...
0
|
||||||
|
11066 / 7367 / 3989
Регистрация: 14.01.2014
Сообщений: 16,799
|
||
| 15.02.2023, 14:47 | ||
|
0
|
||
|
1045 / 313 / 78
Регистрация: 16.03.2020
Сообщений: 954
|
|||||||||
| 15.02.2023, 14:56 [ТС] | |||||||||
|
Добавлено через 44 секунды Добавлено через 2 минуты
0
|
|||||||||
| 15.02.2023, 17:20 | |||||||
|
Ну если код доводить до ума то должен быть класс вектор/точка для которого реализованы 4 арифметических действия и небольшой набор ф-ций. Тогда текст будет выглядеть примерно так
К сожалению, на 3D случай это не обобщается, т.к. там прямые могут скрещиваться. Попытки прорваться "голым матаном" (брать производные и.т.п) неизменно тонут в бесконечном "расписывании" Но это уже другая тема/историяДобавлено через 2 минуты Не по теме: Интересно сделает ли ТС класс "вектор"? Ставлю что нет, это покажется ненужным. Ну кто знает, все-таки надо верить в людей :)
1
|
|||||||
|
1045 / 313 / 78
Регистрация: 16.03.2020
Сообщений: 954
|
|||||||
| 16.02.2023, 07:01 [ТС] | |||||||
0
|
|||||||
|
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
|
|||||||||||||||||
| 16.02.2023, 08:54 | |||||||||||||||||
Ну или другой вариант с перпендикуляром видимо на отрезок:
Если в первом случае опустить перпендикуляр то он не будет равен двум поскольку линия имеет наклон.
1
|
|||||||||||||||||
|
1045 / 313 / 78
Регистрация: 16.03.2020
Сообщений: 954
|
|
| 16.02.2023, 11:16 [ТС] | |
|
Worldmaster,
Не по теме: можно узнать что за программка / сайт?
0
|
|
|
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
|
|
| 16.02.2023, 13:16 | |
|
0
|
|
|
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
|
||
| 16.02.2023, 13:30 | ||
|
ABC - это возможно общее уравнение прямой.
0
|
||
|
11066 / 7367 / 3989
Регистрация: 14.01.2014
Сообщений: 16,799
|
|||
| 16.02.2023, 13:39 | |||
|
0
|
|||
|
1045 / 313 / 78
Регистрация: 16.03.2020
Сообщений: 954
|
||
| 16.02.2023, 14:01 [ТС] | ||
|
0
|
||
| 16.02.2023, 14:20 | |||
|
(A * p.X + B * p.Y) - площадь (2) тр-ка (O, p, p + (p1 - p2)) А вот дальше как-то не сообразю ![]()
1
|
|||
|
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
|
|||
| 16.02.2023, 14:28 | |||
Сообщение было отмечено rim41 как решение
РешениеСсылка на сегмент ТС нужен инструмент не для ручного использования наверное а функция которую можно было бы встроить в какое нибудь приложение. А с маткадом то это как то не так просто получается.
1
|
|||
| 16.02.2023, 14:28 | |
|
Помогаю со студенческими работами здесь
20
Как обычно ищут расстояние между двумя прямыми Найти вероятность получить определённое расстояние между двумя точками, распределёнными равномерно на отрезке Доказать, что расстояние между замкнутым и компактным множествами равно расстоянию между двумя точками этих множеств Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|