function dis=Dis_L2L(A0,A1,B0,B1)
%function dis=Dis_L2L(A0,A1,B0,B1)
%计算A0A1线段与B0B1线段的最短距离
x1=A0(1);
y1=A0(2);
z1=A0(3);
x2=A1(1);
y2=A1(2);
z2=A1(3);
x3=B0(1);
y3=B0(2);
z3=B0(3);
x4=B1(1);
y4=B1(2);
z4=B1(3);
k1=(x2-x1)^2+(y2-y1)^2+(z2-z1)^2;
k2=-[(x2-x1)*(x4-x3)+(y2-y1)*(y4-y3)+(z2-z1)*(z4-z3)];
k3=(x1-x2)*(x1-x3)+(y1-y2)*(y1-y3)+(z1-z2)*(z1-z3);
k4=-[(x2-x1)*(x4-x3)+(y2-y1)*(y4-y3)+(z2-z1)*(z4-z3)];
k5=(x4-x3)^2+(y4-y3)^2+(z4-z3)^2;
k6=(x1-x3)*(x4-x3)+(y1-y3)*(y4-y3)+(z1-z3)*(z4-z3);
K=[k1,k2;k4,k5];
Ans=inv(K)*([k3,k6]');
s=Ans(1,1);
t=Ans(2,1);
temp=zeros(1,4);
X=x1+s*(x2-x1);
Y=y1+s*(y2-y1);
Z=z1+s*(z2-z1);
U=x3+t*(x4-x3);
V=y3+t*(y4-y3);
W=z3+t*(z4-z3);
if s>=0&&s<=1&&t>=0&&t<=1
dis=norm([X,Y,Z]-[U,V,W]);
else
temp(1,1)=Dis_P2L(A0,B0,B1);
temp(1,2)=Dis_P2L(A1,B0,B1);
temp(1,3)=Dis_P2L(B0,A0,A1);
temp(1,4)=Dis_P2L(B1,A0,A1);
dis=min(temp(1,:));
end