2014-11-12 2 views
0

у меня есть два 3d шлицы, производимые MATLAB:найти минимальное расстояние между двумя шлицами

curve1 = cscvn([0 .5 0; 0 .5 0; 0 .5 1]) 
curve2 = cscvn([.5 .2 .5; 2 1 0; .1 2 1]); 

Я хочу найти наименьшее возможное расстояние между точками на кривой 1 в любую точку на кривой 2.

Спасибо, James

+0

Некоторые [помощь] (https://www.physicsforums.com/threads/finding-shortest-distance-between-two-3d-parametrized-curves.773277/), как сформулировать вашу проблему. – Arpi

ответ

0

Наименьшее расстояние между двумя параметрическими кривыми C1 (t) и C2 (s) может происходить в их внутренней части или в их конечных точках. Если это происходит в интерьере, оно будет удовлетворять следующему условию:

C1 '(t) \ dot (C1 (t) - C2 (s)) = 0
C2' (s) \ dot (C1 (t) - C2 (s)) = 0

Это означает, что когда минимальное расстояние происходит при t0 и s0, касательный вектор в C1 (t0) и касательный вектор в C2 (s0) перпендикулярны вектору определяемой C1 (t0) и C2 (s0). В общем, вы можете использовать многомерный метод Ньютона Рафсона для получения параметров t0 и s0. Если вы найдете решение, вы можете найти минимальное расстояние.

Обращаем внимание, что выше двух уравнений сохраняются для локального максимума. Таким образом, вам всегда нужно сравнить «минимальное расстояние», полученное с расстояниями между конечными точками.

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