Минимальное перпендикулярное расстояние от точки до прямой в алгоритме трехмерной плоскости - PullRequest
3 голосов
/ 24 октября 2009

Как найти минимальное перпендикулярное расстояние точки от линии в трехмерной плоскости?

Пожалуйста, дайте мне логику, и я постараюсь написать код для себя.

Пожалуйста, дайте мне знать, как это сделать с точки зрения x, y, z, то есть с точки зрения систем координат.

Мне немного трудно найти правильное решение, которое будет легко с точки зрения кодирования. Онлайн-решения немного ржавые, чтобы понять. Поэтому, пожалуйста, помогите мне.

Обратите внимание, строка дана в терминах трехмерного уравнения пространства.

Ответы [ 3 ]

13 голосов
/ 24 октября 2009

Для данной точки A и линии выберите две разные точки на линии (B и C). Рассчитайте площадь треугольника ABC, используя формула Герона . Умножьте площадь на 2 и разделите ее на длину [BC]. У вас есть результат, который вам нужен.

2 голосов
/ 24 октября 2009

Для бесконечной линии минимальное расстояние - это длина отрезка под прямым углом к ​​бесконечной линии, проходящей через точку, начинающуюся с линии и заканчивающуюся в точке. Направление перпендикул точка. Расстояние между точками - это то, что вам нужно.

Для конечной линии это решение, только если основание перпендикуляра находится на отрезке; в противном случае расстояние между точкой и концом сегмента меньше.

1 голос
/ 24 октября 2009

Вы говорите, что линия дана как уравнение в 3D, но на самом деле плоскости задаются уравнениями. И поскольку говорят, что линия лежит в трехмерной плоскости, предположительно заданной другим уравнением, линия фактически является пересечением двух плоскостей.

Чтобы получить вектор направления линии, возьмите перекрестное произведение нормалей на две плоскости. Если вы используете метод Павла, вам это не нужно.

Чтобы получить точку на линии, выберите какое-то значение для x, скажем, x = 0. Затем решите два уравнения для y и z после включения этого значения. Чтобы найти другую точку для использования в методе Павла, установите для x другое значение, скажем, x = 1, и снова решите систему.

Если линия ориентирована неправильно (перпендикулярно оси x), x может быть фиксированным значением. В этом случае попробуйте установить y в два фиксированных значения. Если это все еще не работает, попробуйте z. Также убедитесь, что исходные плоскости не параллельны, так что на самом деле есть линия пересечения.

Чтобы решить вопрос без метода Павла, пересечь направление линии с вектором, образованным данной точкой, и точкой, найденной на линии. Теперь скрестите этот результат с направлением линии, чтобы получить новый вектор. Точка этого вектора с исходной точкой и снова с точкой на линии. Возьмите разницу и разделите на длину вектора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...