資源簡介
點與線段_線段與線段的最短距離,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
評論
共有 條評論