Заблокирован
1

Точка пересечения двух линий в 3D

07.11.2016, 13:02. Показов 3196. Ответов 4
Метки нет (Все метки)

Есть две линии в 3D, каждая из которых задана двумя точками L1 = p1(x1,y1,z1), p2(x2,y2,z2); L2 = p1(x3,y3,z3), p2(x4,y4,z4)
Как можно найти точку их пересечения (если таковая имеется)? Желательно на векторах и С++
P.S.: считайте, что линии бесконечны
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.11.2016, 13:02
Ответы с готовыми решениями:

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

Общая точка(и) пересечения 2 окружностей
Заданы две окружности: с центром в точке О(x0, y0) и радиусом R0 и с центром в точке О(x1, y1) и...

Точка пересечения отрезка и плоскости
Есть отрезок с координатами концов p1(x0,y0,z0) и p2(x1,y1,z1), есть плоскость, для простоты -...

Точка пересечения луча (прямой) с треугольником.
Как найти точку пересечения луча (прямой) с треугольником в пространстве? Добавлено через 4 часа...

4
Диссидент
Эксперт C
26826 / 16735 / 3666
Регистрация: 24.12.2010
Сообщений: 37,464
07.11.2016, 13:14 2
Наверное, самое рациональное - записать уравнения прямых в параметрическом виде и попытаться решить получившуюся систему уравнений. Неизвестных будет всего 2, зато уравнений 3, и система может не иметь решений (если прямые не пересекаются)
1
Заблокирован
07.11.2016, 14:01  [ТС] 3
Цитата Сообщение от Байт Посмотреть сообщение
Наверное, самое рациональное - записать уравнения прямых в параметрическом виде
Да не, что это wrong way по - моему Я просто вот тут подумал, координаты линий задаются float-ами и из - за потери точности эти линии могут всегда не пересекаться... Наверное нужен какой - то примерный подход с пересечением в допуском...
Вот я могу легко вычислить кратчайшую дистанцию между 3D линиями, но что она мне даёт?..Вроде бы ничего...

Добавлено через 32 секунды
Обрисую задачу. Это 3D софт, в упрощённом виде это как бы 3D линейный экстрюдер, у меня есть, допустим, два 3D отрезка, которые имеют общую точку (joint), ну то есть один - продолжение другого. Есть вектор направления и в этом направление мне нужно вытянуть прямоугольную бобышку из этих соединённых отрезок, ну там как бы задаётся ширина "стены" этой вытягиваемой и высота. Поскольку эта стена имеет толщину, то углы средней точки этой полилинии (два отрезка, они же в одной точке совпадают) должны быть хитро обработаны. Ну так вот, в общем не нужно взять 3д линию от предыдущего отрезка, найти точку пересечения с текущим, ну там что бы геометрию правильно построить.
Я так понимаю, что в 3д это делать геморройно, несмотря на то, что все отрезки лежат в одной 3д плоскости.
Наверное есть смысл как - то матрицей поворота повернуть все координаты отрезков в 2Д как бы, там в два счёта вычислить пересечения, а потом инверсной матрицей обратно всё перетрансформировать. Но вот как бы мне всё это дело повернуть, точнее как найти матрицу поворота (3х3), что бы избавиться от одной координаты?

У меня есть нормаль к плоскости, в которой лежат все отрезки. Допустим я хочу найти матрицу поворота, что бы всё это дело легло в плоскость XZ, как найти эту матрицу?

Добавлено через 30 минут
Воу воу, в Qt матрицы продвинутые, там есть void QMatrix4x4::lookAt(const QVector3D & eye, const QVector3D & center, const QVector3D & up), так что, что бы избавится от одной координаты, я "посмотрю" на плоскость этих базовых отрезков перпендикулярно сверху и получу нужную матрицу, потом всё барахло умножу на инверсную, какой я молодец
0
1481 / 1198 / 819
Регистрация: 29.02.2016
Сообщений: 3,579
07.11.2016, 14:09 4
Calculate the line segment PaPb that is the shortest route between two lines P1P2 and P3P4
http://paulbourke.net/geometry... lineline.c
1
Заблокирован
07.11.2016, 14:13  [ТС] 5
Цитата Сообщение от afront Посмотреть сообщение
Calculate the line segment PaPb that is the shortest route between two lines P1P2 and P3P4
Погоди, кратчайшее расстояние между 3D линиями, это и есть же как бы факт пересечения, если это расстояние меньше допуска, так?
Но мне же нужна сама точка пересечения, а не факт пересечения...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.11.2016, 14:13
Помогаю со студенческими работами здесь

Точка пересечения прямой и двумерной поверхности
Нужно наиболее оптимальным способом найти точку пересечения прямой и некой двумерной поверхности в...

Найти ортоцентр (точка пересечения высот) треугольника
Всем привет нужна помощь. Нужно найти ортоцентр(точка пересечения высот) треугольника. Даны...

Определить находится ли точка внутри пересечения эллипса и круга
подскажите пожалуйста, что я не так делаю ? вроде должно видеть все, а в ответе пишет только z=0...

Определить является ли точка с указанными координатами точкой пересечения диагоналей заданного квадрата
1) Определить есть ли точка с координатами x, y точкой пересечения диагоналей квадрата со стороной...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru