@@ -12,17 +12,33 @@ static double kFirstEccentricitySquared = 6.69437999014 * 0.001;
12
12
static double kSecondEccentricitySquared = 6.73949674228 * 0.001 ;
13
13
static double kFlattening = 1 / 298.257223563 ;
14
14
15
+
16
+ inline double rad2Deg (const double radians)
17
+ {
18
+ return (radians / M_PI) * 180.0 ;
19
+ }
20
+
21
+ inline double deg2Rad (const double degrees)
22
+ {
23
+ return (degrees / 180.0 ) * M_PI;
24
+ }
25
+
15
26
inline void Geodetic2Ecef (const double latitude, const double longitude, const double altitude,
16
27
double * x, double * y, double * z)
17
28
{
18
29
// Convert geodetic coordinates to ECEF.
19
30
// http://code.google.com/p/pysatel/source/browse/trunk/coord.py?r=22
20
- double lat_rad = deg2Rad (latitude);
21
- double lon_rad = deg2Rad (longitude);
22
- double xi = sqrt (1 - kFirstEccentricitySquared * sin (lat_rad) * sin (lat_rad));
23
- *x = (kSemimajorAxis / xi + altitude) * cos (lat_rad) * cos (lon_rad);
24
- *y = (kSemimajorAxis / xi + altitude) * cos (lat_rad) * sin (lon_rad);
25
- *z = (kSemimajorAxis / xi * (1 - kFirstEccentricitySquared ) + altitude) * sin (lat_rad);
31
+ const double lat_rad = deg2Rad (latitude);
32
+ const double lon_rad = deg2Rad (longitude);
33
+ const double sLat = sin (lat_rad);
34
+ const double sLon = sin (lon_rad);
35
+ const double cLat = cos (lat_rad);
36
+ const double cLon = cos (lon_rad);
37
+
38
+ double xi = sqrt (1 - kFirstEccentricitySquared * sLat * sLat );
39
+ *x = (kSemimajorAxis / xi + altitude) * cLat * cLon;
40
+ *y = (kSemimajorAxis / xi + altitude) * cLat * sLon ;
41
+ *z = (kSemimajorAxis / xi * (1 - kFirstEccentricitySquared ) + altitude) * sLat ;
26
42
}
27
43
28
44
void Ecef2Geodetic (const double x, const double y, const double z,
@@ -240,18 +256,6 @@ class GeodeticConverter
240
256
return ret;
241
257
}
242
258
243
- inline static
244
- double rad2Deg (const double radians)
245
- {
246
- return (radians / M_PI) * 180.0 ;
247
- }
248
-
249
- inline static
250
- double deg2Rad (const double degrees)
251
- {
252
- return (degrees / 180.0 ) * M_PI;
253
- }
254
-
255
259
double initial_latitude_;
256
260
double initial_longitude_;
257
261
double initial_altitude_;
0 commit comments