Облако точек хранится в виде массива numpy. Через это облако точек также проходит линия, обозначенная двумя точками.
Как я могу получить самую близкую точку к этой линии в самой оптимизированной версии?
Я вычислил расстояние до каждой точки одну за другой, но вычисление этого занимает много времени, и мое приложение зависает ....
Пожалуйста, помогите мне оптимизировать это; (
Вот как я делал это для каждой точки:
def isectSphere(self, p0, p1, cpt):
# normalized ray direction
r_dir = np.subtract(p0, p1)
r_dir = r_dir / np.linalg.norm(r_dir)
# nearest point on the ray to the sphere
p0_cpt = np.subtract(p0, cpt)
near_pt = np.subtract(p0, r_dir * np.dot(p0_cpt, r_dir))
# distance to center point
return np.linalg.norm(np.subtract(near_pt, cpt))
После итерации этого кода в каждой точке a вынимал из нее минимальное значение.
In Облако точек составляет около 6 000 000 точек.