资源简介
点与线段_线段与线段的最短距离,matlab代码。自编的function,便于嵌入使用
代码片段和文件信息
function dis=Dis_L2L(A0A1B0B1)
%function dis=Dis_L2L(A0A1B0B1)
%计算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=[k1k2;k4k5];
Ans=inv(K)*([k3k6]‘);
s=Ans(11);
t=Ans(21);
temp=zeros(14);
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([XYZ]-[UVW]);
else
temp(11)=Dis_P2L(A0B0B1);
temp(12)=Dis_P2L(A1B0B1);
temp(13)=Dis_P2L(B0A0A1);
temp(14)=Dis_P2L(B1A0A1);
dis=min(temp(1:));
end
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-03-17 20:58 点与线段_线段与线段的最短距离\
文件 955 2017-03-17 20:56 点与线段_线段与线段的最短距离\Dis_L2L.m
文件 219 2017-03-17 20:57 点与线段_线段与线段的最短距离\Dis_P2L.m
- 上一篇:静态小波变换matlab程序
- 下一篇:open_file.m
评论
共有 条评论