Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Алгоритмы > Пересечение отрезков |
Автор: 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) Вот тут то и сказался недостаток образования, я уже и так и эдак вертел - результаты плачевные ![]() С уважением, Роман. |
Автор: 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) ![]() |