2015-09-30 3 views
0

У меня есть две проблемы: как рассчитать минимальное расстояние между двумя линиями. Для получения дополнительной информации я прилагаю изображение здесь.Вычислите минимальное расстояние между двумя линиями и двумя дугами

enter image description here

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

Другая проблема заключается в том, как рассчитать минимальное расстояние между двумя дугами. Я прилагаю другое изображение здесь

enter image description here

Для дуги у меня есть начало, конец и центральная точка и у меня есть начало и конечный угол.

Эта ссылка имеет гораздо больше вещей - Shortest distance between a point and a line segment

Я также получил помощь свыше ссылки.

enter image description here

Это еще одна проблема, что я столкнулся в настоящее время. В этом сценарии как рассчитать минимальное расстояние между двумя дугами?

Любая идея, как решить эту проблему?

ответ

-1

Расстояние между двумя пересекающимися линиями: 0

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

Это длина отрезка, соединяющего точку на линии и перпендикулярно к линии.

Для дуг я считаю, что дуги являются частью кругов, расстояние между ними - это расстояние между их центрами и минус их радиусы.

Вероятно, вы можете найти больше здесь: Calculate the minimum distance between two given circular arcs

Пример example

+0

Здесь линии не пересекаются. –

+0

Я только что отредактировал свой ответ. Вы можете проверить –

+0

Можете ли вы показать мне пример или если у вас есть один и тот же код для строк? –

1

Пусть два сегмента будут AB и CD. Их параметрические уравнения можно записать

P = A + u AB, Q = C + v CD, with u, v in [0, 1]. 

Вы хотите, чтобы свести к минимуму (в квадрате) расстояние

PQ² = (CA + u AB - v CD)², under the given constraints, 

и вы можете отменить первые производные

(CA + u AB - v CD).AB = 0 
(CA + u AB - v CD).CD = 0 

После разрешения системы 2х2 вы получаете пару (u, v). Если обе переменные падают в [0,1], есть пересечение, а расстояние 0.

В противном случае зажим u и/v в соответствующей области спектра [0, 1] и рассчитайте соответствующее расстояние.

Если одна переменная была зажата, расстояние было между конечной точкой и сегментом; если два были зажаты, это между двумя конечными точками.


Аналогичный подход может быть принят для дуг (с использованием тригонометрических функций), и приводит к задаче оптимизации при линейных ограничениях. Менее простое управление, поскольку объектная функция нелинейна.


Мы также можем действовать следующим образом:

  • найти точки, которые делают кратчайшее расстояние между целыми кругами. Есть два случая:

    • окружности пересекаются в двух местах

    • окружности не пересекаются; кратчайшее расстояние между точками пересечения двух окружностей и центральной линией.

  • затем проверьте, соответствуют ли эти точки дугам по угловому сравнению. Если да, вы закончили (расстояние равно 0 или расстоянию между пересечениями).

  • В противном случае рассмотрим конечные точки дуги против другого круга. Ближайшей точкой является пересечение круга с линией через точку и центр. Если пересечение принадлежит дуге, держите расстояние между точкой и пересечением. Повторите это для всех четырех комбинаций конечной точки/дуги и сохраните ближайшую пару.

  • Если действительная пара не найдена, сохраните кратчайшую дистанцию ​​конечной точки/конечной точки.

На изображении показаны расстояния, которые можно рассмотреть. В зеленом, конечной точке/круге; в красном, конечной точке/конечной точке. В этом случае расстояние круга/круга равно нулю при их пересечении. Можно рассмотреть расстояние, если оно соединяет две точки внутри дуг.

enter image description here

Смежные вопросы