Как найти расстояние между отрезками по координатам
Перейти к содержимому

Как найти расстояние между отрезками по координатам

  • автор:

Расстояние между отрезками



Координаты концов первого отрезка: A(xa, ya), B(xb, yb).
Координаты концов второго отрезка: C(xc, yc), D(xd, yd).

Тогда t = Δ1, s = Δ2/Δ. Если 0 ≤ t,s ≤ 1 и Δ ≠ 0, то отрезки пересекаются и расстояние между ними min равно 0, иначе с каждого конца отрезка попытаемся опустить высоту на противоположный. Если отрезок, на который опускаем высоту вертикальный, то поменяем местами координаты каждого конца отрезка и точки, с которой опускаем высоту (таким образом сохраним расстояние между точкой и отрезком, а отрезок станет горизонтальным).

Пусть k и d — коэффициенты уравнения прямой, на которую опущена эта высота. Основание высоты будет находится на прямой в точке Z, координаты Z(xz, yz) можно найти по формуле yz = kxz + d. Поскольку высота перпендикулярна отрезку — скалярное произведение их векторов равно 0. Тогда (x2 — x1)(x3 — xz)+(y2 — y1)(y3 — yz) = 0, соответственно xz = (x3x2 — x3x1 + y2y3 — y1y3 + y1d — y2d)/(ky2 — ky1 + x2 — x1), где (x3, y3) — координаты точки, с которой была опущена высота, (x1, y1) и (x2, y2) — координаты концов отрезка, принадлежащего прямой на которую опущена высота.

Вычислим длину dl каждой высоты, основание которой принадлежит одному из данных отрезков: dl = √((x3 — xz) 2 + (y3 — kxz — d) 2 ).

Минимальная длина высоты и будет наименьшим расстоянием между отрезками. В случае, если невозможно опустить высоты из одного отрезка на другой: расстояние между ними будет равно минимальному расстоянию между концами двух отрезков: min = √((x1 — x3) 2 + (y1 — y3) 2 ), где (x1, y1) — координаты одного из концов первого отрезка, а (x3, y3) — координаты одного из концов второго отрезка.

Как найти расстояние между двумя отрезками?

erge

отрезками или точками??
а по какому принципе измерять расстояние между отрезками? между ближайшими точками отрезков?

delphinpro

Сергей delphinpro @delphinpro
Сергей c0re, по тому же принципу, что и в математике. В школе должны были рассказывать.
Сергей delphinpro, По-моему, нет такого понятия «расстояние между отрезками».

erge

Сергей delphinpro, я в школе учился 30 лет назад )))
Решения вопроса 0
Ответы на вопрос 4

Rsa97

Для правильного вопроса надо знать половину ответа

Назовём концы отрезка как A1-A2 и B1-B2
Для начала проверьте вариант, когда отрезки пересекаются. В этом случае расстояние между ними равно нулю.
Берём первый конец первого отрезка (A1). Опускаем перпендикуляр на прямую, построенную на втором отрезке. Получаем точку пересечения O. Если точка O лежит внутри второго отрезка, то берём расстояние A1O. Если нет, то берём минимальное из A1B1 и A1B2.
Повторяем для точек A2, B1 и B2.
Из четырёх полученных расстояний выбираем минимальное. Это и будет расстоянием между непересекающимися отрезками.

Ответ написан более двух лет назад
Комментировать
Нравится 4 Комментировать

Alexandroppolus

Alexandroppolus @Alexandroppolus

Задача разбивается на две более простые подзадачи.

1) Проверить пересечение отрезков. Если пересекаются, то расстояние равно 0. Можно посчитать площади треугольников, образованных вершинами отрезков. Пересечение будет, если они имеют разный знак +-.

2) если не пересекаются, то найти 4 расстояния, от каждого конца отрезка до другого отрезка. Это вреде обсуждалось тут ранее, поищи.

Ответ написан более двух лет назад
Комментировать
Нравится 2 Комментировать
evgeniy_lm @evgeniy_lm

Как найти расстояние между отрезками

Какое расстояние?
1. Между срединами отрезков или межу вершинами отрезков?
Если взять вариант между срединами, а формат записи
X11 Y11 X12 Y12
X21 Y21 X22 Y22
то получим значение 1,414213562 что ровно в два раза больше чем ваше

Ответ написан более двух лет назад
Oli @irina222222 Автор вопроса
Мне в условии не дано, это между серединами или нет
evgeniy_lm @evgeniy_lm
Oli, Ну других вариантов нет
Wataru @wataru Куратор тега Алгоритмы
Oli, evgeniy_lm, Расстояние между фигурами — обычно расстояние между двумя ближайшими точками.

erge

Примус починяю

тупое решение в лоб — идем в поисковик, и просто тупо пишем: расстояние между отрезками

там и описание и решение и код, правда на Си
берем его и переписываем на Python, получаем:

#!/usr/bin/env python3 # -*- coding: utf-8 -*- import math def ras (x1, y1, x2, y2, x3, y3): ## Если отрезок вертикальный - меняем местами координаты каждой точки. if x1==x2: x1, y1 = y1, x1 x2, y2 = y2, x2 x3, y3 = y3, x3 k=(y1-y2)/(x1-x2) ## Ищем коэффициенты уравнения прямой, которому принадлежит данный отрезок. d=y1-k*x1 xz=(x3*x2-x3*x1+y2*y3-y1*y3+y1*d-y2*d)/(k*y2-k*y1+x2-x1) dl=-1 if ( xz=x1 ) or ( xz=x2 ): dl=math.sqrt((x3-xz)*(x3-xz)+(y3-xz*k-d)*(y3-xz*k-d)) ## Проверим лежит ли основание высоты на отрезке. return dl ## Вводим параметры отрезков # xa, ya, xb, yb = [1, 1, 2, 2] # xc, yc, xd, yd = [2, 1, 3, 0] xa, ya, xb, yb = [int(s) for s in input().split()] xc, yc, xd, yd = [int(s) for s in input().split()] min=-1 t=-2 s=-2 o=(xb-xa)*(-yd+yc)-(yb-ya)*(-xd+xc) o1=(xb-xa)*(yc-ya)-(yb-ya)*(xc-xa) o2=(-yd+yc)*(xc-xa)-(-xd+xc)*(yc-ya) if o!=0: t=o1/o s=o2/o if (t>=0 and s>=0) and (t

PS: ну, . пробовали?? или нужно на подносе?

Расстояние между двумя прямыми. Метод координат. Задание 14

В этой статье я хочу показать решение задачи на нахождение расстояния между скрещивающимися прямыми, которую мы уже решали геометрическим способом, но теперь с помощью метода координат. Я специально показываю решение одной задачи разными способами, чтобы у вас была возможность выбрать наиболее удобный для вас.

Итак, аналитический способ решения задачи:

В правильной треугольной призме ABCA_1B_1C_1, все ребра которой равны 1, найдите расстояние между прямыми ABи CB_1:

Как мы помним из геометрического метода решения этой задачи, расстояние между прямыми и CB_1есть расстояние от точки M , которая является серединой отрезка ABдо плоскости A_1B_1C:

Рассстояние rhoот точки M_0(x_0,y_0,z_0)до плоскости ax+by+cz+d=0вычисляется по такой формуле:

rho=delim<|></p><div class='code-block code-block-10' style='margin: 8px 0; clear: both;'>
<!-- 10theinternet -->
<script src=

<|>/>" />

Поместим нашу призму в систему координат. Если мы решаем задачу с кубом или прямоугольным параллелепипедом, то выбор системы координат очевиден: мы помещаем начало координат в одну из вершин куба, а оси направляем вдоль ребер. В случае призмы это не столь очевидно.

Нам надо выбрать систему координат таким образом, чтобы координаты точки M и точек A_1, B_1и C, задающих плоскость A_1B_1Cвычислялись наиболее простым способом и содержали как можно больше нулей. Поэтому удобно выбрать систему координат вот таким образом:

Запишем координаты нужных нам точек:

A_1(0;-<1/2></p>
<p>;1)

B_1(0;<1/2></p>
<p>;1)

C(<sqrt<3></p><div class='code-block code-block-13' style='margin: 8px 0; clear: both;'>
<!-- 13theinternet -->
<script src=

>/2;0;0)" />

M(0;0;0)

Чтобы найти коэффициенты a, b, cи dв уравнении ax+by+cz+d=0плоскости A_1B_1C, примем коэффициент d=1, и подставим координаты точек A_1, B_1и Cв уравнение плоскости. (Мы приняли коэффициентd=1, так как наша плоскость не проходит через начало координат.)

Получим систему уравнений:

delim<lbrace></p>
<p>b+c+1=0> b+c+1=0> >/2+0*b+0*c+1=0>>>< >

delim<lbrace></p><div class='code-block code-block-15' style='margin: 8px 0; clear: both;'>
<!-- 15theinternet -->
<script src=

b+c+1=0> b+c+1=0> >/2+1=0>>>< >" />

a=-2/<sqrt<3></p>
<p>>,

b=0

,

c=-1

M(0;0;0)

Подставим значения коэффициентов и координаты точки в формулу для расстояния. Получим:

rho=delim<|></p>
<p>>>*0+0*0+*0+1><|>/<sqrt>^2+0^2+^2>>=

sqrt<21></p>
<p>Ответ: /7

Для вас другие записи этой рубрики:

  • Тренировочная работа от 26.01. 2017. Задание 14
  • Видеолекция "Метод координат. Задание С2. Углы в пространстве"
  • Расстояние от точки до плоскости. Задание С2
  • Задание 14 из Тренировочной работы МИОО 18 декабря 2015 года
  • Площадь сечения. Задание С2
  • Задание С2 из пробника ЕГЭ С-Петербург 15.04.2014

По какой формуле найти расстояние между отрезками (прямыми) в пространстве, зная координаты их концов

Как ты вообще себе представляешь это расстояние? Тебе надо найти минимальный отрезок, который соединяет две точки отрезков. Эти две точки-то сразу не определить, не то, что формулу конечную.
Составь два уравнения этих прямых (на которых отрезки) посмотри, где отрезки, может есть лёгкий вариант решения. Может у одного отрезка есть один конец, который наиболее приближен. Задай функцию от этого конца до другого отрезка, и ищи минимум.

Возьмем AB, AB=|b-a|=|a-b| Вся формула

Похожие вопросы

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *