找到两个样条之间的最小距离

时间:2014-11-12 01:28:31

标签: matlab spline

我有两个由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上任意点之间的最小可能距离。

谢谢, 詹姆斯

1 个答案:

答案 0 :(得分: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)定义的向量。通常,您可以使用多元Newton Raphson方法来获取参数t0和s0。如果找到解决方案,则可以找到最小距离。

请注意,上述两个方程仍然适用于局部最大值。所以,你总是需要比较"最小距离"获得到终点之间的距离。