Наименьшее расстояние между 3 точками вдоль отрезка линии - PullRequest
0 голосов
/ 05 июля 2018

В настоящее время я работаю над алгоритмом поиска пути для сеток навигации. Пропустив детали, мне нужно найти алгоритм для нахождения кратчайшего расстояния между тремя точками вдоль отрезка.

Траектория большого перемещения из точки A в B в C. A и C являются фиксированными точками в трехмерном пространстве. B - точка, расположенная где-то на отрезке DE. Какое местоположение B минимизирует расстояние пути ABC?

1 Ответ

0 голосов
/ 05 июля 2018

Вы не даете никакого собственного алгоритма или кода, поэтому я просто изложу алгоритм в общих чертах. Если вам понадобится больше деталей, таких как математические формулы или код, покажите нам больше работы, которую вы проделали над этой проблемой, тогда я буду рад помочь вам.

Это алгоритм без исчисления, но с использованием трехмерной геометрии. Общая идея состоит в том, чтобы найти точку B на линии DE, которая минимизирует путь A-to-B-to-C. Если эта точка находится на сегменте DE, это ваш ответ. Если точка лежит за пределами D, то D - это ваш ответ, а если точка лежит за пределами E, то E - это ваш ответ.

Чтобы найти эту точку B на линии DE, рассмотрите высоту от точки A до линии DE, а также высоту от точки C до линии DE. Теперь поверните точку C вокруг линии DE, чтобы новая точка C 'находилась в той же плоскости, что и точка A и линия DE, но на противоположной стороне линии от точки A. Теперь найдите пересечение отрезка AC' и линии DE - там конечно один. Эта точка пересечения является вашей точкой B на линии DE.

Все это будет сделано проще путем жесткого преобразования трехмерного пространства для размещения точки D в начале координат, точки E на положительной оси x и точки A в верхней полуплоскости над осью x. Затем вы найдете нужную точку, а затем выполните обратное жесткое преобразование в точке B.

Ты понимаешь? Сейчас я не в состоянии показать вам график этого алгоритма, хотя завтра я могу его составить. Как я уже сказал, покажите какую-нибудь свою работу, тогда я буду рад предоставить более подробную информацию.


Я должен кратко упомянуть два других подхода. Метод исчисления использует производную от выражения длины пути. Это будет включать решение кубического полиномиального уравнения, которое имеет только один действительный корень. Компьютерный подход использует алгоритм золотого сечения или что-то подобное для аппроксимации минимума выражения длины пути. Выбери свой яд. (Ни один из этих подходов не является легким.)

...