echo off
%--------------------------------------------------
% Dist 3D
% Compute 3D distances between adjacent 3D
% points given lat,lon,ht of points. Lat,lon
% given in decimal degrees. Height is assumed
% to be ellipsoidal.
% 31 May 94
%
% M-files: refell, ell2xyz
%--------------------------------------------------
%clear
format long
%---------- Enter lat,lon,ht of points (dec.deg. and metres)
data=[
45.39869059 -75.92254838 43.3264
45.39717673 -75.92490890 37.9113
45.39687374 -75.92538123 37.0964
45.39202841 -75.93293515 35.2925
45.39172526 -75.93340769 35.4287
45.38536627 -75.94331837 36.8902
45.32875124 -75.86700044 83.4260
45.32874766 -75.86700706 83.2148
45.40718517 -76.05124053 57.1871
45.38536622 -75.94331833 36.8859
45.39172990 -75.93340863 35.0980
45.39203118 -75.93293226 35.3270
45.39687381 -75.92538142 37.1207
45.39717670 -75.92490901 37.8899
45.39869059 -75.92254838 43.3340 ];
lat=deg2rad(data(:,1));
lon=deg2rad(data(:,2));
h=data(:,3);
n=length(lat);
%---------- Compute dist between adjacent points
[a,b,e2,finv]=refell('NAD83');
[X,Y,Z]=ell2xyz(lat,lon,h,a,e2);
dX=X(2:n)-X(1:n-1);
dY=Y(2:n)-Y(1:n-1);
dZ=Z(2:n)-Z(1:n-1);
d=sqrt(dX.^2+dY.^2+dZ.^2);
%---------- List results
%[dX dY dZ]
%d % Incremental distances
echo off
disp('Incremental Distances (m)')
for i=1:n-1; fprintf('%15.4f\n',d(i)); end;