Расстояние от точки до отрезка линии в 3d (Python) - PullRequest
0 голосов
/ 05 июня 2019

Я ищу функцию Python, которая вычисляла бы расстояние от точки в 3D (x_0, y_0, z_0) до линии отрезка , определяемой ее конечными точками (x_1, y_1, z_1) и (x_2,y_2, z_2).

Я нашел решение для 2D только для этой проблемы.

Существуют решения для определения расстояния от точки до линии в 3d, но не до отрезка, как здесь: dist to segment

(снимок сделанс Рассчитать расстояние от точки до отрезка с особыми случаями )

1 Ответ

1 голос
/ 05 июня 2019

Этот ответ адаптирован отсюда: Вычислить евклидово расстояние между массивом точек до отрезка линии в Python без цикла for .

Функция lineseg_dist возвращает расстояние расстояние от точки p до отрезка [a, b].p, a и b - это np.arrays.

import numpy as np

def lineseg_dist(p, a, b):

    # normalized tangent vector
    d = np.divide(b - a, np.linalg.norm(b - a))

    # signed parallel distance components
    s = np.dot(a - p, d)
    t = np.dot(p - b, d)

    # clamped parallel distance
    h = np.maximum.reduce([s, t, 0])

    # perpendicular distance component
    c = np.cross(p - a, d)

    return np.hypot(h, np.linalg.norm(c))
...