Заблокирован
|
|
1 | |
Точка пересечения двух линий в 3D07.11.2016, 13:02. Показов 3786. Ответов 4
Метки нет Все метки)
(
Есть две линии в 3D, каждая из которых задана двумя точками L1 = p1(x1,y1,z1), p2(x2,y2,z2); L2 = p1(x3,y3,z3), p2(x4,y4,z4)
Как можно найти точку их пересечения (если таковая имеется)? Желательно на векторах и С++ ![]() P.S.: считайте, что линии бесконечны
0
|
|
07.11.2016, 13:02 | |
Ответы с готовыми решениями:
4
Общая точка(и) пересечения 2 окружностей
Точка пересечения луча (прямой) с треугольником. |
Диссидент
![]() 27697 / 17314 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
07.11.2016, 13:14 | 2 |
Наверное, самое рациональное - записать уравнения прямых в параметрическом виде и попытаться решить получившуюся систему уравнений. Неизвестных будет всего 2, зато уравнений 3, и система может не иметь решений (если прямые не пересекаются)
1
|
Заблокирован
|
|
07.11.2016, 14:01 [ТС] | 3 |
Да не, что это wrong way по - моему
![]() Вот я могу легко вычислить кратчайшую дистанцию между 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
|
1494 / 1209 / 821
Регистрация: 29.02.2016
Сообщений: 3,601
|
|
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 |
Погоди, кратчайшее расстояние между 3D линиями, это и есть же как бы факт пересечения, если это расстояние меньше допуска, так?
Но мне же нужна сама точка пересечения, а не факт пересечения...
0
|
07.11.2016, 14:13 | |
07.11.2016, 14:13 | |
Помогаю со студенческими работами здесь
5
Точка пересечения прямой и двумерной поверхности Найти ортоцентр (точка пересечения высот) треугольника
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |