Position.hpp
Go to the documentation of this file.
1 //==============================================================================
2 //
3 // This file is part of GNSSTk, the ARL:UT GNSS Toolkit.
4 //
5 // The GNSSTk is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU Lesser General Public License as published
7 // by the Free Software Foundation; either version 3.0 of the License, or
8 // any later version.
9 //
10 // The GNSSTk is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU Lesser General Public License for more details.
14 //
15 // You should have received a copy of the GNU Lesser General Public
16 // License along with GNSSTk; if not, write to the Free Software Foundation,
17 // Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
18 //
19 // This software was developed by Applied Research Laboratories at the
20 // University of Texas at Austin.
21 // Copyright 2004-2022, The Board of Regents of The University of Texas System
22 //
23 //==============================================================================
24 
25 //==============================================================================
26 //
27 // This software was developed by Applied Research Laboratories at the
28 // University of Texas at Austin, under contract to an agency or agencies
29 // within the U.S. Department of Defense. The U.S. Government retains all
30 // rights to use, duplicate, distribute, disclose, or release this software.
31 //
32 // Pursuant to DoD Directive 523024
33 //
34 // DISTRIBUTION STATEMENT A: This software has been approved for public
35 // release, distribution is unlimited.
36 //
37 //==============================================================================
38 
39 #ifndef GNSSTK_POSITION_HPP
40 #define GNSSTK_POSITION_HPP
41 
42 #include "Exception.hpp"
43 #include "StringUtils.hpp"
44 #include "Triple.hpp"
45 #include "EllipsoidModel.hpp"
46 #include "RefFrame.hpp"
47 #include "Xvt.hpp"
48 #include "Angle.hpp"
49 #include "gnsstk_export.h"
50 
51 namespace gnsstk
52 {
53  // forward declarations
54  class Position;
58  double range(const Position& A, const Position& B);
59 
61 
62 
136  class Position : public Triple
137  {
138  public:
139  // ----------- Part 1: coordinate systems ---------------------------
140  //
143  {
149  };
150 
152  std::string getSystemName()
153  noexcept;
154 
155  // ----------- Part 2: member functions: tolerance ------------------
156  //
158  GNSSTK_EXPORT static const double ONE_MM_TOLERANCE;
160  GNSSTK_EXPORT static const double ONE_CM_TOLERANCE;
162  GNSSTK_EXPORT static const double ONE_UM_TOLERANCE;
163 
165  GNSSTK_EXPORT static double POSITION_TOLERANCE;
166 
168  static double setPositionTolerance(const double tol)
169  { POSITION_TOLERANCE = tol; return POSITION_TOLERANCE; }
170 
172  static double getPositionTolerance()
173  { return POSITION_TOLERANCE; }
174 
183  Position& setTolerance(const double tol)
184  noexcept;
185 
186  // ----------- Part 3: member functions: constructors ---------------
187  //
192  Position()
193  noexcept;
194 
207  Position(const double& a,
208  const double& b,
209  const double& c,
211  const EllipsoidModel *ell = nullptr,
212  const RefFrame& frame = RefFrame());
213 
224  Position(const double ABC[3],
226  const EllipsoidModel *ell = nullptr,
227  const RefFrame& frame = RefFrame());
228 
239  Position(const Triple& ABC,
241  const EllipsoidModel *ell = nullptr,
242  const RefFrame& frame = RefFrame());
243 
249  Position(const Xvt& xvt)
250  noexcept;
251 
254  noexcept
255  {}
256 
257  // ----------- Part 4: member functions: arithmetic -----------------
258  //
265  Position& operator-=(const Position& right)
266  noexcept;
267 
274  Position& operator+=(const Position& right)
275  noexcept;
276 
284  friend Position operator-(const Position& left,
285  const Position& right)
286  noexcept;
287 
294  friend Position operator+(const Position& left,
295  const Position& right)
296  noexcept;
297 
303  friend Position operator*(const double& scale,
304  const Position& right)
305  {
306  Position tmp(right);
307  tmp.theArray *= scale;
308  return tmp;
309  }
310 
316  friend Position operator*(const Position& left,
317  const double& scale)
318  {
319  return operator*(scale, left);
320  }
321 
327  friend Position operator*(const int& scale,
328  const Position& right)
329  {
330  return operator*(double(scale), right);
331  }
332 
338  friend Position operator*(const Position& left,
339  const int& scale)
340  {
341  return operator*(double(scale), left);
342  }
343 
344  // ----------- Part 5: member functions: comparisons ----------------
345  //
350  bool operator==(const Position &right) const
351  noexcept;
352 
357  bool operator!=(const Position &right) const
358  noexcept;
359 
360  // ----------- Part 6: member functions: coordinate transformations -
361  //
369  noexcept;
370 
374  noexcept
375  { transformTo(Geodetic); return *this; }
376 
381  {
382  try { setEllipsoidModel(ell); }
383  catch(GeometryException& ge) { GNSSTK_RETHROW(ge); }
385  return *this;
386  }
387 
391  noexcept
392  { transformTo(Cartesian); return *this; }
393 
394 
395  // ----------- Part 7: member functions: get ------------------------
396  //
397  // These routines retrieve coordinate values in all
398  // coordinate systems.
399  //
400 
403  noexcept;
404 
406  double X() const
407  noexcept;
408 
410  double Y() const
411  noexcept;
412 
414  double Z() const
415  noexcept;
416 
418  double geodeticLatitude() const
419  noexcept;
420 
423  double geocentricLatitude() const
424  noexcept;
425 
427  double theta() const
428  noexcept;
429 
431  double phi() const
432  noexcept;
433 
436  double longitude() const
437  noexcept;
438 
441  double radius() const
442  noexcept;
443 
445  double height() const
446  noexcept;
447 
450  noexcept
451  { return system; };
452 
455  noexcept
456  { return geodeticLatitude(); }
457 
460  noexcept
461  { return geocentricLatitude(); }
462 
465  noexcept
466  { return longitude(); }
467 
470  noexcept
471  { return height(); }
472 
474  double getHeight() const
475  noexcept
476  { return height(); }
477 
479  double getX() const
480  noexcept
481  { return X(); }
482 
484  double getY() const
485  noexcept
486  { return Y(); }
487 
489  double getZ() const
490  noexcept
491  { return Z(); }
492 
495  double getTheta() const
496  noexcept
497  { return theta(); }
498 
500  double getPhi() const
501  noexcept
502  { return phi(); }
503 
505  double getRadius() const
506  noexcept
507  { return radius(); }
508 
509  // ----------- Part 8: member functions: set ------------------------
510  //
515  void setReferenceFrame(const RefFrame& frame)
516  noexcept;
517 
523  void setEllipsoidModel(const EllipsoidModel *ell);
524 
534  Position& setGeodetic(const double lat,
535  const double lon,
536  const double ht,
537  const EllipsoidModel *ell = nullptr);
538 
548  Position& setGeocentric(const double lat,
549  const double lon,
550  const double rad);
551 
561  Position& setSpherical(const double theta,
562  const double phi,
563  const double rad);
564 
573  Position& setECEF(const double X,
574  const double Y,
575  const double Z)
576  noexcept;
577 
584  Position& setECEF(const double XYZ[3])
585  noexcept
586  { return setECEF(XYZ[0],XYZ[1],XYZ[2]); }
587 
594  Position& setECEF(const Triple& XYZ)
595  noexcept
596  { return setECEF(XYZ[0],XYZ[1],XYZ[2]); }
597 
598  // ----------- Part 9: member functions: setToString, printf ---------
599  //
649  Position& setToString(const std::string& str,
650  const std::string& fmt);
651 
652 
653  // if you can see this, ignore the \'s below, as they are for
654  // the nasty html-ifying of doxygen. Browsers try to
655  // interpret the % and they get all messed up.
688  std::string printf(const char *fmt) const;
689 
694  std::string printf(const std::string& fmt) const
695  { return printf(fmt.c_str()); }
696 
700  std::string asString() const;
701 
702  // ----------- Part 10: functions: fundamental conversions -----------
703  //
709  static void convertSphericalToCartesian(const Triple& tpr,
710  Triple& xyz)
711  noexcept;
712 
719  static void convertCartesianToSpherical(const Triple& xyz,
720  Triple& tpr)
721  noexcept;
722 
723 
735  static void convertCartesianToGeodetic(const Triple& xyz,
736  Triple& llh,
737  const double A,
738  const double eccSq)
739  noexcept;
740 
751  static void convertGeodeticToCartesian(const Triple& llh,
752  Triple& xyz,
753  const double A,
754  const double eccSq)
755  noexcept;
756 
757 
764  static void convertCartesianToGeocentric(const Triple& xyz,
765  Triple& llr)
766  noexcept;
767 
772  static void convertGeocentricToCartesian(const Triple& llr,
773  Triple& xyz)
774  noexcept;
775 
776 
784  static void convertGeocentricToGeodetic(const Triple& llr,
785  Triple& geodeticllh,
786  const double A,
787  const double eccSq)
788  noexcept;
789 
797  static void convertGeodeticToGeocentric(const Triple& geodeticllh,
798  Triple& llr,
799  const double A,
800  const double eccSq)
801  noexcept;
802 
803  // ----------- Part 11: operator<< and other useful functions --------
804  //
811  friend std::ostream& operator<<(std::ostream& s,
812  const Position& p);
813 
822  friend double range(const Position& A,
823  const Position& B);
824 
831  static double radiusEarth(const double geolat,
832  const double A,
833  const double eccSq)
834  noexcept;
835 
842  noexcept
843  {
844  Position p(*this);
846  return Position::radiusEarth(p.theArray[0], p.AEarth, p.eccSquared);
847  }
848 
857  double elevation(const Position& Target) const;
858 
868  double elevationGeodetic(const Position& Target) const;
869 
878  double azimuth(const Position& Target) const;
879 
889  double azimuthGeodetic(const Position& Target) const;
890 
907  Position getIonosphericPiercePoint(const double elev,
908  const double azim,
909  const double ionoht) const
910  noexcept;
911 
917  double getCurvMeridian() const
918  noexcept;
919 
925  double getCurvPrimeVertical() const
926  noexcept;
927 
950 
973  static Angle getZenithAngle(const Angle& phi1, const Angle& lambda1,
974  const Angle& phi2, const Angle& lambda2,
975  double r1, double r2,
976  AngleReduced& delta);
977 
997 
1006  Position getRayPosition(double dist, const Position& target) const;
1007 
1019  {
1020  AEarth = src.AEarth;
1021  eccSquared = src.eccSquared;
1022  }
1023 
1026  double getAEarth() const
1027  { return AEarth; }
1028 
1029  // ----------- Part 12: private functions and member data ------------
1030  //
1031  private:
1032 
1041  void initialize(const double a,
1042  const double b,
1043  const double c,
1045  const EllipsoidModel *ell = nullptr,
1046  const RefFrame& frame = RefFrame());
1047 
1048  /* Values of the coordinates, defined for each system as follows;
1049  * Cartesian : X,Y,Z in meters
1050  * Geocentric : Latitude(degrees N), Longitude(degrees E),
1051  * Radius (meters)
1052  * Geodetic : Latitude(degrees N), Longitude(degrees E),
1053  * Height above ellipsoid (meters)
1054  * Spherical : theta (degrees) - angle from the z axis
1055  * phi (degrees) - angle in xy plane from x axis
1056  * toward y axis (same as longitude)
1057  * radius (meters?) - distance from origin
1058  */
1059  // use std::valarray<double> theArray; -- inherit from Triple
1060 
1062  double AEarth;
1063 
1065  double eccSquared;
1066 
1069 
1071  double tolerance;
1072 
1074 
1075  }; // end class Position
1076 
1078 
1079 } // namespace gnsstk
1080 
1081 #endif // GNSSTK_POSITION_HPP
gnsstk::Position::Geodetic
@ Geodetic
geodetic latitude, longitude, and height above ellipsoid
Definition: Position.hpp:145
gnsstk::Position::setGeocentric
Position & setGeocentric(const double lat, const double lon, const double rad)
Definition: Position.cpp:531
gnsstk::Position::getCoordinateSystem
CoordinateSystem getCoordinateSystem() const noexcept
return the coordinate system for this Position
Definition: Position.hpp:449
gnsstk::Position::radiusEarth
double radiusEarth() const noexcept
Definition: Position.hpp:841
gnsstk::Position::copyEllipsoidModelFrom
void copyEllipsoidModelFrom(const Position &src)
Definition: Position.hpp:1018
gnsstk::AngleReduced
Definition: AngleReduced.hpp:60
gnsstk::Position::getRadius
double getRadius() const noexcept
return radius
Definition: Position.hpp:505
gnsstk::Position::Cartesian
@ Cartesian
cartesian (Earth-centered, Earth-fixed)
Definition: Position.hpp:147
Xvt.hpp
gnsstk::Position::operator-
friend Position operator-(const Position &left, const Position &right) noexcept
Definition: Position.cpp:190
gnsstk::Position::getTheta
double getTheta() const noexcept
Definition: Position.hpp:495
gnsstk::Position::transformTo
Position & transformTo(CoordinateSystem sys) noexcept
Definition: Position.cpp:247
gnsstk::Position::operator+
friend Position operator+(const Position &left, const Position &right) noexcept
Definition: Position.cpp:204
const
#define const
Definition: getopt.c:43
gnsstk::Position::asGeodetic
Position & asGeodetic() noexcept
Definition: Position.hpp:373
StringUtils.hpp
gnsstk::Position::initialize
void initialize(const double a, const double b, const double c, CoordinateSystem s=Cartesian, const EllipsoidModel *ell=nullptr, const RefFrame &frame=RefFrame())
Definition: Position.cpp:1701
gnsstk::Position::setReferenceFrame
void setReferenceFrame(const RefFrame &frame) noexcept
Definition: Position.cpp:467
gnsstk::Position::operator*
friend Position operator*(const int &scale, const Position &right)
Definition: Position.hpp:327
gnsstk::Position::operator*
friend Position operator*(const double &scale, const Position &right)
Definition: Position.hpp:303
gnsstk::Position::range
friend double range(const Position &A, const Position &B)
Definition: Position.cpp:1273
gnsstk::Position::Position
Position() noexcept
Definition: Position.cpp:92
gnsstk::Position::getZ
double getZ() const noexcept
return ECEF Z coordinate (meters)
Definition: Position.hpp:489
gnsstk::Position::geocentricLatitude
double geocentricLatitude() const noexcept
Definition: Position.cpp:398
Angle.hpp
gnsstk::Position::setECEF
Position & setECEF(const double XYZ[3]) noexcept
Definition: Position.hpp:584
gnsstk::Position::setTolerance
Position & setTolerance(const double tol) noexcept
Definition: Position.cpp:82
gnsstk::Position::system
CoordinateSystem system
see CoordinateSystem
Definition: Position.hpp:1068
gnsstk::Position::getAltitude
double getAltitude() const noexcept
return height above ellipsoid (meters)
Definition: Position.hpp:469
gnsstk::Position::convertGeocentricToCartesian
static void convertGeocentricToCartesian(const Triple &llr, Triple &xyz) noexcept
Definition: Position.cpp:1155
gnsstk::Position::Y
double Y() const noexcept
return Y coordinate (meters)
Definition: Position.cpp:364
gnsstk::Position::getAEarth
double getAEarth() const
Definition: Position.hpp:1026
gnsstk::Position::operator*
friend Position operator*(const Position &left, const double &scale)
Definition: Position.hpp:316
gnsstk::Position::Z
double Z() const noexcept
return Z coordinate (meters)
Definition: Position.cpp:375
gnsstk::Position::setSpherical
Position & setSpherical(const double theta, const double phi, const double rad)
Definition: Position.cpp:566
gnsstk::Position::setToString
Position & setToString(const std::string &str, const std::string &fmt)
Definition: Position.cpp:658
gnsstk::Triple::theArray
std::valarray< double > theArray
Definition: Triple.hpp:251
gnsstk::Position::refFrame
RefFrame refFrame
Definition: Position.hpp:1073
gnsstk::RefFrame
Definition: RefFrame.hpp:53
gnsstk::Triple
Definition: Triple.hpp:68
gnsstk::Position::setEllipsoidModel
void setEllipsoidModel(const EllipsoidModel *ell)
Definition: Position.cpp:478
gnsstk::Position::asECEF
Position & asECEF() noexcept
Definition: Position.hpp:390
gnsstk::Position::height
double height() const noexcept
return height above ellipsoid (meters) (Geodetic).
Definition: Position.cpp:455
gnsstk
For Sinex::InputHistory.
Definition: BasicFramework.cpp:50
gnsstk::Angle
Definition: Angle.hpp:53
gnsstk::Position::azimuth
double azimuth(const Position &Target) const
Definition: Position.cpp:1365
gnsstk::Position::printf
std::string printf(const char *fmt) const
Definition: Position.cpp:982
gnsstk::Position::convertCartesianToGeodetic
static void convertCartesianToGeodetic(const Triple &xyz, Triple &llh, const double A, const double eccSq) noexcept
Definition: Position.cpp:1087
gnsstk::Position::asGeodetic
Position & asGeodetic(EllipsoidModel *ell)
Definition: Position.hpp:380
gnsstk::Position::geodeticLatitude
double geodeticLatitude() const noexcept
return geodetic latitude (degrees North).
Definition: Position.cpp:386
gnsstk::Position::azimuthGeodetic
double azimuthGeodetic(const Position &Target) const
Definition: Position.cpp:1391
gnsstk::Position::setECEF
Position & setECEF(const double X, const double Y, const double Z) noexcept
Definition: Position.cpp:601
gnsstk::Position::getReferenceFrame
const RefFrame & getReferenceFrame() const noexcept
return coordinate RefFrame
Definition: Position.cpp:346
gnsstk::Position::getHeight
double getHeight() const noexcept
return height above ellipsoid (meters)
Definition: Position.hpp:474
gnsstk::Position::getZenithAngle
Angle getZenithAngle(const Position &target, AngleReduced &delta) const
Definition: Position.cpp:1514
gnsstk::Position::ONE_MM_TOLERANCE
static const GNSSTK_EXPORT double ONE_MM_TOLERANCE
One millimeter tolerance.
Definition: Position.hpp:158
RefFrame.hpp
gnsstk::Position::convertGeodeticToGeocentric
static void convertGeodeticToGeocentric(const Triple &geodeticllh, Triple &llr, const double A, const double eccSq) noexcept
Definition: Position.cpp:1216
gnsstk::Position::radius
double radius() const noexcept
Definition: Position.cpp:444
gnsstk::Position::getGeocentricLatitude
double getGeocentricLatitude() const noexcept
return geocentric latitude (deg N)
Definition: Position.hpp:459
gnsstk::Position::printf
std::string printf(const std::string &fmt) const
Definition: Position.hpp:694
gnsstk::Position::getX
double getX() const noexcept
return ECEF X coordinate (meters)
Definition: Position.hpp:479
gnsstk::Position::Geocentric
@ Geocentric
geocentric (regular spherical coordinates)
Definition: Position.hpp:146
gnsstk::Position::operator*
friend Position operator*(const Position &left, const int &scale)
Definition: Position.hpp:338
gnsstk::Position::phi
double phi() const noexcept
return spherical coordinate phi in degrees
Definition: Position.cpp:420
gnsstk::Position::getGeodeticLatitude
double getGeodeticLatitude() const noexcept
return geodetic latitude (deg N)
Definition: Position.hpp:454
gnsstk::Position::ONE_CM_TOLERANCE
static const GNSSTK_EXPORT double ONE_CM_TOLERANCE
One centimeter tolerance.
Definition: Position.hpp:160
gnsstk::Position::getCurvMeridian
double getCurvMeridian() const noexcept
Definition: Position.cpp:1487
gnsstk::Position::asString
std::string asString() const
Definition: Position.cpp:1031
gnsstk::Position::Spherical
@ Spherical
spherical coordinates (theta,phi,radius)
Definition: Position.hpp:148
gnsstk::Position::getPositionTolerance
static double getPositionTolerance()
Returns the current POSITION_TOLERANCE.
Definition: Position.hpp:172
gnsstk::Xvt
Definition: Xvt.hpp:60
gnsstk::Position::operator+=
Position & operator+=(const Position &right) noexcept
Definition: Position.cpp:173
gnsstk::Position::CoordinateSystem
CoordinateSystem
The coordinate systems supported by Position.
Definition: Position.hpp:142
gnsstk::Position::ONE_UM_TOLERANCE
static const GNSSTK_EXPORT double ONE_UM_TOLERANCE
One micron tolerance.
Definition: Position.hpp:162
GNSSTK_RETHROW
#define GNSSTK_RETHROW(exc)
Definition: Exception.hpp:369
gnsstk::Position::Unknown
@ Unknown
unknown coordinate system
Definition: Position.hpp:144
gnsstk::Position::setPositionTolerance
static double setPositionTolerance(const double tol)
Changes the POSITION_TOLERANCE for all Position objects.
Definition: Position.hpp:168
gnsstk::Position::POSITION_TOLERANCE
static GNSSTK_EXPORT double POSITION_TOLERANCE
Default tolerance for time equality in days.
Definition: Position.hpp:165
gnsstk::Position::AEarth
double AEarth
semi-major axis of Earth (meters)
Definition: Position.hpp:1062
gnsstk::Position::X
double X() const noexcept
return X coordinate (meters)
Definition: Position.cpp:353
gnsstk::Position::getY
double getY() const noexcept
return ECEF Y coordinate (meters)
Definition: Position.hpp:484
gnsstk::Position::getPhi
double getPhi() const noexcept
return spherical coordinate angle phi (deg) (same as longitude)
Definition: Position.hpp:500
gnsstk::Position::setECEF
Position & setECEF(const Triple &XYZ) noexcept
Definition: Position.hpp:594
gnsstk::Position::convertSphericalToCartesian
static void convertSphericalToCartesian(const Triple &tpr, Triple &xyz) noexcept
Definition: Position.cpp:1044
Exception.hpp
gnsstk::Position::longitude
double longitude() const noexcept
Definition: Position.cpp:432
gnsstk::Position::getIonosphericPiercePoint
Position getIonosphericPiercePoint(const double elev, const double azim, const double ionoht) const noexcept
Definition: Position.cpp:1450
gnsstk::Position::getLongitude
double getLongitude() const noexcept
return longitude (deg E) (either geocentric or geodetic)
Definition: Position.hpp:464
gnsstk::Position::operator!=
bool operator!=(const Position &right) const noexcept
Definition: Position.cpp:235
gnsstk::range
double range(const Position &A, const Position &B)
Definition: Position.cpp:1273
Triple.hpp
gnsstk::Position::operator<<
friend std::ostream & operator<<(std::ostream &s, const Position &p)
gnsstk::Position
Definition: Position.hpp:136
gnsstk::Position::setGeodetic
Position & setGeodetic(const double lat, const double lon, const double ht, const EllipsoidModel *ell=nullptr)
Definition: Position.cpp:495
gnsstk::Position::tolerance
double tolerance
tolerance used in comparisons
Definition: Position.hpp:1071
gnsstk::Position::theta
double theta() const noexcept
return spherical coordinate theta in degrees
Definition: Position.cpp:409
gnsstk::Position::operator==
bool operator==(const Position &right) const noexcept
Definition: Position.cpp:221
gnsstk::Position::convertGeodeticToCartesian
static void convertGeodeticToCartesian(const Triple &llh, Triple &xyz, const double A, const double eccSq) noexcept
Definition: Position.cpp:1126
gnsstk::EllipsoidModel
Definition: EllipsoidModel.hpp:56
gnsstk::Position::getRayPosition
Position getRayPosition(double dist, const Position &target) const
Definition: Position.cpp:1604
gnsstk::Position::getRayPerigee
Position getRayPerigee(const Position &target) const
Definition: Position.cpp:1552
gnsstk::Position::elevationGeodetic
double elevationGeodetic(const Position &Target) const
Definition: Position.cpp:1331
gnsstk::Position::convertCartesianToSpherical
static void convertCartesianToSpherical(const Triple &xyz, Triple &tpr) noexcept
Definition: Position.cpp:1058
gnsstk::Position::convertGeocentricToGeodetic
static void convertGeocentricToGeodetic(const Triple &llr, Triple &geodeticllh, const double A, const double eccSq) noexcept
Definition: Position.cpp:1170
gnsstk::Position::elevation
double elevation(const Position &Target) const
Definition: Position.cpp:1308
gnsstk::Position::getSystemName
std::string getSystemName() noexcept
return string giving name of coordinate system
Definition: Position.cpp:63
gnsstk::Position::operator-=
Position & operator-=(const Position &right) noexcept
Definition: Position.cpp:156
gnsstk::Position::convertCartesianToGeocentric
static void convertCartesianToGeocentric(const Triple &xyz, Triple &llr) noexcept
Definition: Position.cpp:1144
EllipsoidModel.hpp
gnsstk::Position::eccSquared
double eccSquared
square of ellipsoid eccentricity
Definition: Position.hpp:1065
gnsstk::Position::getCurvPrimeVertical
double getCurvPrimeVertical() const noexcept
Definition: Position.cpp:1503


gnsstk
Author(s):
autogenerated on Wed Oct 25 2023 02:40:40