Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Пересечение отрезков


Автор: Romka 7.4.2003, 17:14
Добрый день!

Подскажите пожалуйста способ определения пересечения двух отрезков в трехмерном пространстве. Сам я определяю по пересечению проекций отрезков на плоскости, но это как-то коряво на мой взгляд...

Заранее благодарен.

С уважением, Роман.

Автор: podval 7.4.2003, 19:45
Самый верный способ: если система из двух уравнений, описывающих прямые, имеет решение, значит они пересекаются. Записать уравнения прямых, если известны отрезки, - не проблема.

Автор: pike 8.4.2003, 08:32
Можно определить точку пересечения проекций на плоскости XY и, если в этой точке Z-ы линий совпадают - то пересекаются.

Автор: Unregistered 8.4.2003, 08:45
Если имеется ввиду уравнение прямой P = P1 + t ( P2 - P1 ), то для 3D должна быть (по идее )система из трех уравнений:

x1 + ta (x2 - x1) = x3 + tb (x4 - x3)
y1 + ta (y2 - y1) = y3 + tb (y4 - y3)
z1 + ta (z2 - z1) = z3 + tb (z4 - z3)

Вот тут то и сказался недостаток образования, я уже и так и эдак вертел - результаты плачевныеsad.gif(

С уважением, Роман.


Автор: pike 9.4.2003, 08:43
Так что у тебя дано изначально?

Координаты концов отрезков?

Автор: neutrino 9.4.2003, 10:21
Прямые в трех-мерном пространстве определяются либо пересечением двух плоскостей:

A1x+B1y+C1z+D1=0
A2x+B2y+C2z+D2=0

либо, если прямая проходит через две точки:

(x-x1)/(x2-x1)=(y-y1)/(y2-y1)=(z-z1)/(z2-z1)

Последний нерелевантен для этого случая, таким образом надо решить систему уравнений:
A1x+B1y+C1z+D1=0
A2x+B2y+C2z+D2=0

A3x+B3y+C3z+D3=0
A4x+B4y+C4z+D4=0

гдe два последних уравнения - это уравнения плоскостей, образующих вторую прямую.

Можно решить, найдя дитерменант матрицы... этот способ легко имплементировать в программе.

Автор: Unregistered 9.4.2003, 12:16
Большое спасибо за совет!

Эх... Плохо быть бестолковым, буду разбираться.

С уважением, Роман.

Автор: pike 9.4.2003, 12:22
... либо так
y=f(x)
z=f(x)
smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)