Кратчайшее расстояние от 3D-точки до 3D-линии - PullRequest
0 голосов
/ 03 августа 2020

У меня есть линия AB, построенная из двух точек:

A:      "X": 3609859.464
        "Y": -288646.389
        "Z": 5232776.002
B:      "X": 3627454.491,
        "Y": -273763.234,
        "Z": 5222031.489

У меня также есть точка Xn с этими координатами:

        "X": 3626785.577,
        "Y": -274291.458,
        "Z": 5222356.006

Как рассчитать кратчайшее расстояние от Xn до AB?

Я в конечном итоге буду использовать это в электронной таблице Excel, если у кого-то уже есть что-то полезное!

Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 04 августа 2020

Используя точку перемещения на AB, квадрат расстояния составляет

(XA + t AB)²

Дифференцируя на t, мы отменяем производную

(XA + t AB) AB = 0

или

t = - XA.AB / AB².

Это дает нам минимальное расстояние в квадрате

(XA - (XA.AB / AB²) AB)² = XA² - 2 (XA.AB)²/AB² + (XA.AB)²/AB² = XA² - (XA.AB)²/AB².
0 голосов
/ 03 августа 2020

Сделайте векторы AB и AX

AB.x = B.x - A.x
AB.y = B.y - A.y
AB.z = B.z - A.z
and similar for AX

Найдите проекцию X на линию AB, используя скалярное (точечное) произведение

P = A + AB * (AB.dot.AX) / (AB.dot.AX)
where 
AB.dot.AX = AB.x * AX.x + AB.y * AX.y + AB.z * AX.z

Требуемое расстояние - длина вектора XP

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