[0,1] 上均匀离散,每个 t tt 的取值,对应线段上的一个点。将求线段间的距离转化为求两线段上点的距离集合的最小值。(两线段上点的距离集合是指 a aa 线段的每个离散点与 b bb 线段上的所有离散点之间的距离,若设 a aa 线段上的离散点个数为 m mm , b bb 线段上的离散点个数为 n nn ,则两线段上点的距离集合元素的个数为: m × n m\times nm×n)。该方法所求出的线段之间的距离为近似值,所求结果的精度取决于线段上离散点的数量。
程序实现
doubleLinesDistance_another_method(double*line1,double*line2){int i,j,m,n;double*t1,*t2,*x1,*y1,*z1,*x2,*y2,*z2,**juli,min_value;double DirectionVector_m1,DirectionVector_n1,DirectionVector_p1;double DirectionVector_m2,DirectionVector_n2,DirectionVector_p2; t1= newdouble[11]; t2= newdouble[11]; x1= newdouble[11]; x2= newdouble[11]; y1= newdouble[11]; y2= newdouble[11]; z1= newdouble[11]; z2= newdouble[11]; DirectionVector_m1=line1[3]-line1[0]; DirectionVector_n1=line1[4]-line1[1]; DirectionVector_p1=line1[5]-line1[2];//	printf("line1: \n");//	printf("x1=%lf,x2=%lf\n",line1[0],line1[3]);//	printf("x2-x1=%lf\n",DirectionVector_m1);for(i=0;i