• 大小: 1KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: Matlab
  • 标签: 线段距离  

资源简介

点与线段_线段与线段的最短距离,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

评论

共有 条评论

相关资源