FRGEOD.M
上传用户:sfyaiting
上传日期:2009-10-25
资源大小:320k
文件大小:1k
源码类别:

GPS编程

开发平台:

Matlab

  1. function [X,Y,Z] = frgeod(a,finv,dphi,dlambda,h)
  2. %FRGEOD  Subroutine to calculate Cartesian coordinates X,Y,Z
  3. %       given geodetic coordinates latitude, longitude (east),
  4. %       and height above reference ellipsoid along with
  5. %       reference ellipsoid values semi-major axis (a) and
  6. %       the inverse of flattening (finv)
  7. % The units of linear parameters h,a must agree (m,km,mi,..etc).
  8. % The input units of angular quantities must be in decimal degrees.
  9. % The output units of X,Y,Z will be the same as the units of h and a.
  10. % Copyright (C) 1987 C. Goad, Columbus, Ohio
  11. % Reprinted with permission of author, 1996
  12. % Original Fortran code rewritten into MATLAB
  13. % Kai Borre 03-03-96
  14. % compute degree-to-radian factor
  15. dtr = pi/180;
  16. % compute square of eccentricity
  17. esq = (2-1/finv)/finv;
  18. sinphi = sin(dphi*dtr);
  19. % compute radius of curvature in prime vertical
  20. N_phi = a/sqrt(1-esq*sinphi*sinphi);
  21. % compute P and Z
  22. % P is distance from Z axis
  23. P = (N_phi + h)*cos(dphi*dtr);
  24. Z = (N_phi*(1-esq) + h) * sinphi;
  25. X = P*cos(dlambda*dtr);
  26. Y = P*sin(dlambda*dtr);
  27. %%%%%%% end frgeod.m %%%%%%%%%%%%%%