#python #numpy #closest #kdtree
#python #numpy #ближайший #kdtree
Вопрос:
Я пытаюсь найти ближайшую треугольную плоскость к точке, используя cKDTree query
.
Я уже знаю, как найти ближайшего соседа к точке. Пример:
from scipy.spatial import cKDTree
import numpy as np
p1 = np.array([0, 0, 0])
p2 = np.array([[100, 100, 100],
[670, 500, 890],
[666, 456, 765]])
tuple_dist_neighbor = cKDTree(p2).query(p1)
print(tuple_dist_neighbor) # prints (173.20508075688772, 0)
Таким return
образом, значение представляет собой кортеж расстояния до ближайшего соседа и индекса ближайшего соседа.
Теперь предположим, что у меня есть два треугольника, каждый из которых состоит из 3 точек. Пример:
triangle1 = np.array([[0, 0, 0],
[0, 4, 0],
[4, 0, 4]])
triangle2 = np.array([[100, 100, 100],
[100, 140, 100],
[140, 100, 140]])
triangle_set = np.array([triangle1, triangle2])
point = np.array([10, 11, 12])
Итак, мне интересно, возможно ли найти ближайший треугольник к точке, используя cKDTree, как указано выше.
Треугольники, с которыми я имею дело, образуют сетку все вместе.
Рисунок 1: Сетка, сформированная из треугольников
И реальная проблема заключается в том, чтобы найти ближайший треугольник в этой сетке к точке.
Комментарии:
1. Имеют ли треугольники какое-либо отношение друг к другу? (т. Е. Образуют ли они сетку? Являются ли они выпуклой оболочкой или симплексами Делоне облака точек?) — если они произвольны, вам вроде как не повезло, и, вероятно, потребуется применить грубую силу.
2. Да, они делают. Я отредактировал свой пост.