空间解析几何 3:空间点到线段和平面的距离【附MATLAB代码】
目录
空间中点到线段的距离
空间中点到平面的投影和距离
matlab代码
空间中点到线段的距离
空间中点到平面的投影和距离
matlab代码
function [dis,P2,t]= point2Line (A1,B1,C1)
%求空间一点到一线段的最短距离
%[dis,P2,Q2]=pointSegmentDistance(A,B,C)
%A B为线段首末端点,C为空间一点
%dis为最短距离 P2 Q2为最短距离的首末端点
% 取0~1时P点在线段AB上滑动,>1 P点在B端点外,<0 P点在A端点外
A = B1(1)-A1(1);
B = B1(2)-A1(2);
C = B1(3)-A1(3);
D = A1(1)-C1(1);
E = A1(2)-C1(2);
F = A1(3)-C1(3);
t = -(A*D+B*E+C*F)/(A*A+B*B+C*C);
if t>1
t=1;
elseif t<0
t=0;
end
x1 = A1(1) + A*t;
y1 = A1(2) + B*t;
z1 = A1(3) + C*t;
dis = sqrt((x1-C1(1))^2+(y1-C1(2))^2+(z1-C1(3))^2);
P2 = [x1 ,y1,z1];
end
function result=Point2planceDis(P,n,Pn)
% output
% result 为点到平面的距离
% input
% P空间中一点 n为平面的单位法向量,Pn为平面上一点
A = n(1)*P(1)+n(2)*P(2)+n(3)*P(3);
B = n(1)*Pn(1)+n(2)*Pn(2)+n(3)*Pn(3);
C = n(1)^2+n(2)^2+n(3)^2;
t = (A-B)/C;
x = P(1)-t*n(1);
y = P(2)-t*n(2);
z = P(3)-t*n(3);
%投影点坐标
Q = [x,y,z];
%距离
PQ = P-Q;
result = norm(PQ);
end
下一章:空间解析几何4-空间中点到椭圆的距离【附MATLAB代码】